对于下面的代码块:
For I = 0 To listOfStrings.Count - 1
If myString.Contains(lstOfStrings.Item(I)) Then
Return True
End If
Next
Return False
输出是:
案例 1:
myString: C:\Files\myfile.doc
listOfString: C:\Files\, C:\Files2\
Result: True
案例 2:
myString: C:\Files3\myfile.doc
listOfString: C:\Files\, C:\Files2\
Result: False
列表 (listOfStrings) 可能包含多个项目(最少 20 个),并且必须针对数千个字符串(如 myString)进行检查。
是否有更好(更高效)的方式来编写这段代码?
最佳答案
使用 LINQ,并使用 C#(这些天我不太了解 VB):
bool b = listOfStrings.Any(s=>myString.Contains(s));
或(更短、更高效,但可能不太清楚):
bool b = listOfStrings.Any(myString.Contains);
如果您正在测试相等性,则值得查看 HashSet
等,但这对部分匹配没有帮助,除非您将其拆分为片段并添加复杂性的顺序。
更新:如果您真的是指“StartsWith”,那么您可以对列表进行排序并将其放入一个数组中;然后使用 Array.BinarySearch
查找每个项目 - 通过查找检查它是完全匹配还是部分匹配。
关于c# - 检查字符串是否包含列表(字符串)中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/500925/