我正在嘗試向我的應用程式添加搜索選項。如果用戶的搜索詞存在于(字串)串列中,則應顯示該串列中的所有匹配元素。如果沒有,則應顯示“未找到”。我有 for 回圈作業,但我似乎無法找到未找到的條件應該去哪里。
for (int i = 0; i<myList.Count; i )
{
if (myList[i].Contains(search))
{
WriteLine(myList[i]);
} else
{
WriteLine("not found");
}
}
uj5u.com熱心網友回復:
由于您想獲取所有匹配項,因此您需要保留找到的匹配項的運行串列。檢查串列中的所有專案后,您可以通過檢查串列中有多少匹配項來確定是否沒有找到。
var matches = new List<string>();
for (int i = 0; i < myList.Count; i )
{
if (myList[i].Contains(search))
{
matches.Add(myList[i]);
}
}
if (matches.Count == 0)
{
WriteLine("not found");
}
else
{
foreach (var match in matches)
{
WriteLine(match);
}
}
如果您之后不需要匹配項,則可以將串列替換為 int 并在找到匹配項時增加該值。如果在回圈中找到匹配項,則將匹配項寫入行。然后,在您檢查了串列中的所有專案后,您可以檢查您的計數器是否等于 0,如果是,請寫入“未找到”行。
var counter = 0;
for (int i = 0; i < myList.Count; i )
{
if (myList[i].Contains(search))
{
WriteLine(myList[i]);
counter ;
}
}
if (counter == 0)
{
WriteLine("not found");
}
uj5u.com熱心網友回復:
1. 你可以使用 lambda 來解決你的問題。
非常簡單,但不要忘記添加using System.Linq. Lambda 結果(包含所有需要的專案)將記錄在變數中match,根據它的大小match.Count(),您可以列印所有這些結果,如果沒有可列印的內容,則錯誤。
var match = myList.Where(s => s.Contains(search));
if (match.Count() == 0) {
Console.WriteLine("Not found!");
} else {
foreach (var item in match) {
Console.WriteLine(item);
}
}
2. 好老的 for 回圈。
只需將所有匹配項添加到另一個串列中,然后像在 lambda-case 中一樣使用它們。
var match = new List<string>();
foreach (var item in myList) {
if (item.Contains(search)) {
match.Add(item);
}
}
if (match.Count() == 0){
Console.WriteLine("Nothing found!");
} else {
foreach (var item in match) {
Console.WriteLine(item);
}
}
總而言之,主要思想是將搜索結果存盤在另一個變數中,然后使用它。
3.找到標志。
另一種方法是使用一些bool標志并將其變為真,當我們發現某些東西時。
bool foundFlag = false;
foreach (var item in myList) {
if (item.Contains(search)) {
foundFlag = true;
Console.WriteLine(item);
}
}
if (!foundFlag){
Console.WriteLine("Nothing found!");
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/461546.html
上一篇:當還需要有條件地修改密鑰時,使用ifelse條件部署字典理解的語法?在這個具體的例子中?
下一篇:Gradle無法開始構建
