如何检查字符串"Edgar Allan Poe"是否包含任何项目列表(字符串)?



我有一个字符串列表:

Dim n As New List(Of String)
n.Add("Poe")
n.Add("Shakespeare")
Dim sAuthor As String = "Edgar Allan Poe"

如何检查sAuthor是否包含任何"n"项?

我错过了第二个参数:

If sAuthor.Contains(n, ...) Then

谢谢!

您可以使用Any方法(documentation):

If (n.Any(Function(item) sAuthor.Contains(item))) Then
' success!
End If

小提琴:https://dotnetfiddle.net/r7y5Xw

它的作用是返回一个布尔值,该值基于集合中的任何项是否根据谓词计算为true。

在这种情况下,我们说:我的列表中的任何项都包含在变量中吗?

因为OP表明上面的代码对他们来说太难读/调试了,这就是你在不使用LINQ的情况下做同样事情的方法:

Dim anyMatch As Boolean = False
For Each item In n
If (sAuthor.Contains(item)) Then
anyMatch = True
Exit For
End If 
Next
If (anyMatch) Then
' success!
End If

小提琴:https://dotnetfiddle.net/DPWo9m

两者之间唯一的(实际的)区别是上面的代码使用了LINQ,它提供了下面代码更简洁的机制。

This

If (From a In n Where sAuthor.Contains(a) Select True Take 1).FirstOrDefault Then
Stop
End If

最新更新