VB.NET中如何在字符串列表中查找子字符串?
VB.NET 列表中查找包含子字符串的元素问题解析
问题原因
List(Of String).Contains方法的逻辑是精确匹配整个列表元素,它会检查列表中是否存在与传入参数完全相等的字符串。你的列表元素是"book1"、"book2"、"book3",没有任何一个元素和"book"完全一致,所以第二个判断分支会执行。
而单个字符串的Contains方法是检查当前字符串内部是否包含指定子串,所以第一个判断能正确命中。
无需显式遍历的解决方案
可以借助LINQ的Any方法来实现需求,代码上不用手动写循环,底层会高效处理遍历逻辑:
方法1:结合字符串的Contains
Imports System.Linq ' 若项目未默认导入,需添加此引用 Sub Main(args As String()) Dim StringList As New List(Of String) From {"book1", "book2", "book3"} ' 检查列表中是否存在包含"book"的元素 If StringList.Any(Function(s) s.Contains("book")) Then Console.WriteLine("This works!") Else Console.WriteLine("This doesn't work!") End If Console.ReadLine() End Sub
方法2:使用通配符(Like操作符)
如果你习惯用通配符,也可以用Like配合Any:
If StringList.Any(Function(s) s Like "*book*") Then Console.WriteLine("This works!") Else Console.WriteLine("This doesn't work!") End If
补充说明
LINQ的Any方法会在找到第一个符合条件的元素后立即停止遍历,性能上和手动写循环提前跳出是一致的,属于高效的解决方案。
内容的提问来源于stack exchange,提问作者wesley delk
相关产品推荐
相关产品推荐

