如何获取字符串中与List(Of String)匹配的对应条目?
解决VB.NET中查找字符串包含的列表条目问题
首先得纠正你代码里的一个小错误:List(Of String)的Add方法只能接受单个String参数,不能像你写的那样传两个值。如果要添加变量名对应的字符串,直接把变量传进去就行——比如你定义了somefancystringname这个字符串变量,直接strList.Add(somefancystringname)就可以,再单独添加字面量"Fancy"。
接下来咱们实现你要的核心功能:检查str是否包含strList中的某个条目,找到的话返回该条目用于条件判断。用LINQ来实现会非常简洁。
完整代码示例
1. 正确初始化列表(包含变量和字面量)
' 先定义你要用到的字符串变量 Dim somefancystringname As String = "Fancy" Dim strList As New List(Of String) Dim str As String = "SomeFancyStringThere" ' 给列表添加条目:变量和字面量都支持 strList.Add(somefancystringname) strList.Add("String") strList.Add("Other")
2. 查找第一个匹配的条目
' 遍历列表,找到第一个被str包含的条目,没找到返回Nothing Dim matchingItem As String = strList.FirstOrDefault(Function(item) str.Contains(item)) ' 用IF语句判断并使用结果 If matchingItem IsNot Nothing Then ' 找到匹配项,执行你的业务逻辑 Console.WriteLine($"匹配到的条目:{matchingItem}") ' 比如可以在这里做分支处理 Else ' 没有匹配项的情况 Console.WriteLine("未找到任何匹配的条目") End If
3. (可选)查找所有匹配的条目
如果需要找到str包含的所有列表条目,而不只是第一个,可以用Where方法:
Dim allMatches As IEnumerable(Of String) = strList.Where(Function(item) str.Contains(item)) ' 遍历所有匹配结果 For Each item In allMatches Console.WriteLine($"匹配条目:{item}") Next
关键说明
FirstOrDefault:这是LINQ方法,会遍历列表返回第一个满足条件的元素;如果没有任何元素满足条件,会返回Nothing(适合做空判断)。如果你确定列表中一定有匹配项,可以用First,但没找到时会抛出异常,所以更推荐用FirstOrDefault。- Lambda表达式:
Function(item) str.Contains(item)是用来判断当前列表项是否被目标字符串str包含,要是需要区分大小写的话,可以改成str.Contains(item, StringComparison.OrdinalIgnoreCase)。 - 变量添加到列表:完全支持把字符串变量直接添加到
List(Of String)中,只要变量是String类型就没问题。
内容的提问来源于stack exchange,提问作者DDev
相关产品推荐
相关产品推荐

