VB.NET中如何判断字符串是否包含List(Of String)的任意元素
问题原因
你对String.Contains方法的参数理解有误:该方法原生只支持检查单个子字符串是否存在于目标字符串中,没有接收字符串列表做批量匹配的重载,所以你直接把列表n传入的写法是不成立的。String.Contains的可选第二个参数是StringComparison枚举,用来指定匹配规则(比如是否忽略大小写、是否按区域规则比较),不是用来传匹配集合的。
解决方案
写法1:LINQ 简洁写法(推荐)
首先在代码文件顶部导入LINQ命名空间:
Imports System.Linq
直接用Any方法判断列表中是否存在任意一个元素是目标字符串的子串即可:
' 区分大小写匹配 If n.Any(Function(keyword) sAuthor.Contains(keyword)) Then ' 匹配成功后的业务逻辑,示例中sAuthor包含"Poe"会命中 End If
如果需要忽略大小写匹配,就给Contains传入第二个比较规则参数:
' 忽略大小写匹配 If n.Any(Function(keyword) sAuthor.Contains(keyword, StringComparison.OrdinalIgnoreCase)) Then ' 匹配成功逻辑 End If
写法2:传统循环写法(无需LINQ,兼容极老版本.NET)
如果你的环境不支持LINQ,可以直接遍历列表做判断,找到第一个匹配项就可以终止循环提升效率:
Dim hasMatch As Boolean = False For Each keyword In n If sAuthor.Contains(keyword) Then hasMatch = True Exit For End If Next If hasMatch Then ' 匹配成功后的业务逻辑 End If
内容的提问来源于stack exchange,提问作者tmighty
相关产品推荐
相关产品推荐

