.net 如果字符串包含多个值

.net 如果字符串包含多个值,.net,vb.net,.net,Vb.net,我有40多个值要检查我的字符串是否包含其中一个值 及 对我来说一点都不方便,我如何在Contains()中放入多个值 ? 如果某个值比Contains()更好,那就更好了Contains只接受一个值,因此您必须为每个值调用它一次。诀窍是编写代码,使您只编写一次调用,但它会被执行多次。在LINQ时代,你会这样做: Dim值={“value1”、“value2”、“value3”} 如果values.Any(函数myString.Contains),则 '... 如果结束 旧式选项将使用循环: D

我有40多个值要检查我的字符串是否包含其中一个值

对我来说一点都不方便,我如何在Contains()中放入多个值 ?


如果某个值比Contains()更好,那就更好了

Contains
只接受一个值,因此您必须为每个值调用它一次。诀窍是编写代码,使您只编写一次调用,但它会被执行多次。在LINQ时代,你会这样做:

Dim值={“value1”、“value2”、“value3”}
如果values.Any(函数myString.Contains),则
'...
如果结束
旧式选项将使用循环:

Dim值={“value1”、“value2”、“value3”}
Dim containsAny=False
对于值中的每个值
如果myString.Contains(value)则
containsAny=True
退出
如果结束
下一个
如果是的话
'...
如果结束
您可以将其中任何一个放入一个方法中:

Public函数ContainsAny(文本为字符串,参数数组值为字符串())为布尔值
返回值。任意(函数文本包含)
端函数
Public函数ContainsAny(文本为字符串,参数数组值为字符串())为布尔值
对于值中的每个值
如果text.Contains(value)则
返回真值
如果结束
下一个
返回错误
端函数
然后这样称呼它:

Dim值={“value1”、“value2”、“value3”}
如果Me.ContainsAny(myString,values)那么
'...
如果结束
或者像这样:

如果Me.ContainsAny(myString,“value1”、“value2”、“value3”),那么
'...
如果结束
您还可以编写如下扩展方法:

导入System.Runtime.CompilerServices
模块扩展
公共函数ContainsAny(源为字符串,参数数组值为字符串())为布尔值
返回值.Any(函数源.包含)
端函数
端模块
或者像这样:

导入System.Runtime.CompilerServices
模块扩展
公共函数ContainsAny(源为字符串,参数数组值为字符串())为布尔值
对于值中的每个值
如果source.Contains(value)则
返回真值
如果结束
下一个
返回错误
端函数
端模块
然后这样称呼它:

Dim值={“value1”、“value2”、“value3”}
如果myString.ContainsAny(值),那么
'...
如果结束
或者像这样:

如果myString.ContainsAny(“value1”、“value2”、“value3”),则
'...
如果结束

Contains
只接受一个值,因此您必须为每个值调用一次。诀窍是编写代码,使您只编写一次调用,但它会被执行多次。在LINQ时代,你会这样做:

Dim值={“value1”、“value2”、“value3”}
如果values.Any(函数myString.Contains),则
'...
如果结束
旧式选项将使用循环:

Dim值={“value1”、“value2”、“value3”}
Dim containsAny=False
对于值中的每个值
如果myString.Contains(value)则
containsAny=True
退出
如果结束
下一个
如果是的话
'...
如果结束
您可以将其中任何一个放入一个方法中:

Public函数ContainsAny(文本为字符串,参数数组值为字符串())为布尔值
返回值。任意(函数文本包含)
端函数
Public函数ContainsAny(文本为字符串,参数数组值为字符串())为布尔值
对于值中的每个值
如果text.Contains(value)则
返回真值
如果结束
下一个
返回错误
端函数
然后这样称呼它:

Dim值={“value1”、“value2”、“value3”}
如果Me.ContainsAny(myString,values)那么
'...
如果结束
或者像这样:

如果Me.ContainsAny(myString,“value1”、“value2”、“value3”),那么
'...
如果结束
您还可以编写如下扩展方法:

导入System.Runtime.CompilerServices
模块扩展
公共函数ContainsAny(源为字符串,参数数组值为字符串())为布尔值
返回值.Any(函数源.包含)
端函数
端模块
或者像这样:

导入System.Runtime.CompilerServices
模块扩展
公共函数ContainsAny(源为字符串,参数数组值为字符串())为布尔值
对于值中的每个值
如果source.Contains(value)则
返回真值
如果结束
下一个
返回错误
端函数
端模块
然后这样称呼它:

Dim值={“value1”、“value2”、“value3”}
如果myString.ContainsAny(值),那么
'...
如果结束
或者像这样:

如果myString.ContainsAny(“value1”、“value2”、“value3”),则
'...
如果结束

如果只想检查指定字符串中是否存在单词,请使用以下命令:

Dim str As String = "Hello World Welcome to Stack Overflow"
Dim wordsToFind() As String = {"Hello", "to"}

For Each word In wordsToFind
    If str.Contains(word) Then
        MsgBox("One of the word found!")
        Return
    End If
Next

如果在
wordsToFind
数组的
str
中找到任何单词,它将显示一条消息并返回。

如果您只想检查指定字符串中是否存在单词,请使用以下命令:

Dim str As String = "Hello World Welcome to Stack Overflow"
Dim wordsToFind() As String = {"Hello", "to"}

For Each word In wordsToFind
    If str.Contains(word) Then
        MsgBox("One of the word found!")
        Return
    End If
Next

如果在
wordsToFind
数组的
str
中找到任何单词,那么它将显示一条消息并返回。

如果需要再次检查,则还可以添加扩展方法来检查字符串是否包含任何给定参数

比如说

Public Function ContainsAnyOf(Of T)(SourceList As List(Of T), ParamArray ParamList() As T) As Boolean
    If SourceList IsNot Nothing AndAlso ParamList IsNot Nothing Then
        For Each ParamItem As T In ParamList
            If SourceList.Contains(ParamItem) Then Return True
        Next
    End If
    Return False
End Function

如果您需要再次检查,那么您还可以添加一个extensions methode来检查字符串是否包含任何给定的参数

比如说

Public Function ContainsAnyOf(Of T)(SourceList As List(Of T), ParamArray ParamList() As T) As Boolean
    If SourceList IsNot Nothing AndAlso ParamList IsNot Nothing Then
        For Each ParamItem As T In ParamList
            If SourceList.Contains(ParamItem) Then Return True
        Next
    End If
    Return False
End Function

你用什么语言?因为显示的代码既不是c#也不是vb@MarcGravell,考虑到问题被标记为VB.NET,并且语法是VB,我认为可以安全地说它是VB.NET。OP