[英]How to search listbox items with only part of its text
我有一個C#WinForms應用程序。 有一個列表框,其中填充了以下格式的值:
category:user:id
Food:tester:17
等等
現在,我需要獲取一個項目是否包含在此列表框中,並且只知道類別和ID,不知道用戶。 因此,從技術上講,我需要執行以下操作(偽代碼):
if(MyListBox.Items.Contains("Food:*:17"))
*表示“任何”。 有辦法嗎?
假設列表框直接用字符串填充,最簡單的方法是linq和regex的組合:
if(MyListBox.Items.Cast<string>().Any(s => Regex.IsMatch(s, "Food:.*:17"))) //(For RegEx: using System.Text.RegularExpressions )
或更嚴格,如果項目始終是value:value:value的組合,而您僅檢查第一個和第三個值:
if (MyListBox.Items.Cast<string>().Any(s => { var values = s.Split(':'); return values[0] == "Food" && values[2] == "17"; }))
嘗試這樣的事情
var res =
MyListBox.items.SingleOrDefault(
item =>
item.Contains("Food:") && item.Contains(":17") &&
item.IndexOf(":17", StringComparison.InvariantCulture) >
item.IndexOf("Food:", StringComparison.InvariantCulture));
if ( !string.IsNullOrEmpty(res))
{
//your code here
}
}
你可以做類似的事情
var value = MyListBox.Items.Cast<string>()
.FirstOrDefault(m => m.Contains("Food:") && m.Contains(":17"));
if (value != null) {
// you have a match
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.