[英]Find a string in a list of strings in c#
我正在嘗試查找字符串列表是否包含 C# 中的特定字符串。 例如:假設我的列表中有 3 個條目
list<string> s1 = new List<string>(){
"the lazy boy went to the market in a car",
"tom",
"balloon"};
string s2 = "market";
現在,如果 s1 包含 s2,我想返回 true,在這種情況下它就是這樣做的。
return s1.Contains(s2);
這返回 false 這不是我想要的。 我正在閱讀有關 Predicate 的信息,但對於這種情況並沒有多大意義。 提前致謝。
最簡單的方法是單獨搜索每個字符串:
bool exists = s1.Any(s => s.Contains(s2));
List<string>.Contains()
方法將檢查是否有任何整個字符串與您要求的字符串匹配。 您需要檢查每個單獨的列表元素來完成您想要的。
請注意,這可能是一項耗時的操作,如果您的列表中包含大量元素、非常長的字符串,尤其是在您要搜索的字符串不存在或僅在其附近找到的情況下列表的結尾。
包含的替代方案可能是 IndexOf:
var res = s1.Any(s => s.IndexOf(s2, StringComparison.Ordinal) >= 0)
StringComparison.Ordinal 作為參數傳遞,因為 Contains() 也在內部使用它。
Peter Duniho 的回答通常是最好的方法。 我提供了一個替代解決方案。 這個不需要 LINQ、lamdas 或循環。 這只需要string
內置類型的方法。
string.Concat(listOfString).Contains("data");
注意:這種方法可能會導致不正確的結果。 例如:
string.Concat("da", "ta").Contains("data");
當它應該是假的時候會返回真;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.