检查一个字符串是否包含来自一个字符串列表的元素。

13 浏览
0 Comments

检查一个字符串是否包含来自一个字符串列表的元素。

对于以下的代码块:

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)进行匹配。

有没有更好(更高效)的写法?

admin 更改状态以发布 2023年5月20日
0
0 Comments

当你构建字符串时应该像这样

bool inact = new string[] { "SUSPENDARE", "DIZOLVARE" }.Any(s=>stare.Contains(s));

0
0 Comments

使用C#和LINQ:

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

或者(更短更有效,但可能不太清晰):

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

如果您正在测试相等性,则值得查看 HashSet 等,但除非将其拆分为碎片并添加复杂度顺序,否则无法帮助部分匹配。


更新:如果您确实是指“StartsWith”,则可以将列表排序并放入数组中;然后使用 Array.BinarySearch 找到每个项-通过查找来检查它是否是完全匹配或部分匹配。

0