小编典典

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

all

对于以下代码块:

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

案例二:

myString: C:\Files3\myfile.doc
listOfString: C:\Files\, C:\Files2\
Result: False

列表 (listOfStrings) 可能包含多个项目(最少 20 个),并且必须针对数千个字符串(如 myString)进行检查。

有没有更好(更有效)的方法来编写这段代码?


阅读 80

收藏
2022-07-12

共1个答案

小编典典

使用 LINQ,并使用 C#(这些天我不太了解 VB):

bool b = listOfStrings.Any(s=>myString.Contains(s));

或(更短、更高效,但可以说不太清楚):

bool b = listOfStrings.Any(myString.Contains);

如果您正在测试相等性,则值得一看HashSet等,但这对部分匹配没有帮助,除非您将其拆分为片段并添加复杂性顺序。


更新:如果您的意思是“StartsWith”,那么您可以对列表进行排序并将其放入数组中;然后用于Array.BinarySearch查找每个项目 -
通过查找检查它是完全匹配还是部分匹配。

2022-07-12