簡體   English   中英

如何僅使用部分文本搜索列表框項目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM