检查字符串是否包含列表中的元素(字符串)

对于以下代码块:

For I = 0 To listOfStrings.Count - 1

If myString.Contains(lstOfStrings.Item(I)) Then

Return True

End If

Next

Return False

输出为:

myString: C:\Files\myfile.doc

listOfString: C:\Files\, C:\Files2\

Result: True

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查找每个项目-

通过查找检查它是完全匹配还是部分匹配。

以上是 检查字符串是否包含列表中的元素(字符串) 的全部内容, 来源链接: utcz.com/qa/424448.html

回到顶部