VB.NET - 如果string包含“value1”或“value2”

时间:2011-06-16 09:58:24

标签: vb.net string if-statement contains

我想知道如何检查字符串是否包含“value1”或“value2”? 我试过这个:

If strMyString.Contains("Something") Then

End if

这样可行,但事实并非如此:

If strMyString.Contains("Something") or ("Something2") Then

End if

这给了我一个错误,即从字符串到Long的转换无法完成。 如果我将or ("Something2")放在第一个括号内,它会给我一个错误,即字符串无法转换为布尔值。

那么如何检查字符串是否包含“string1”或“string2”而不必编写太多代码?

9 个答案:

答案 0 :(得分:68)

你必须这样做:

If strMyString.Contains("Something") OrElse strMyString.Contains("Something2") Then
    '[Put Code Here]
End if

答案 1 :(得分:11)

你需要这个

If strMyString.Contains("Something") or strMyString.Contains("Something2") Then
    'Code
End if

答案 2 :(得分:4)

以下是检查特定字符串是否包含某些预定义字符串的替代解决方案。它使用IndexOf函数:

'this is your string
Dim strMyString As String = "aaSomethingbb"

'if your string contains these strings
Dim TargetString1 As String = "Something"
Dim TargetString2 As String = "Something2"

If strMyString.IndexOf(TargetString1) <> -1 Or strMyString.IndexOf(TargetString2) <> -1 Then

End If

注意:此解决方案已使用Visual Studio 2010进行测试。

答案 3 :(得分:3)

除了已经给出的答案之外,如果您使用OrElse代替Or,则会更快,因为第二次测试会被短路。如果您知道一个字符串比另一个字符串更可能在这种情况下首先放置它,则尤其如此:

If strMyString.Contains("Most Likely To Find") OrElse strMyString.Contains("Less Likely to Find") Then
    'Code
End if

答案 4 :(得分:2)

你自己有("Something2") - 你需要测试它以便返回一个布尔值:

If strMyString.Contains("Something") or strMyString.Contains("Something2") Then

答案 5 :(得分:0)

If strMyString.Contains("Something") or strMyString.Contains("Something2") Then

End if

该错误表示编译器认为您要对布尔值和字符串执行按位OR。这当然行不通。

答案 6 :(得分:0)

 If strMyString.Tostring.Contains("Something") or strMyString.Tostring.Contains("Something2") Then


     End if

答案 7 :(得分:0)

我以不同的方式来处理这个问题。我创建了一个仅返回true或false的函数。 用法:

如果FieldContains(“ A; B; C”,MyFieldVariable,True | False),则

..做点事情

如果结束

Public Function FieldContains(Searchfor As String, SearchField As String, AllowNulls As Boolean) As Boolean

       If AllowNulls And Len(SearchField) = 0 Then Return True

        For Each strSearchFor As String In Searchfor.Split(";")
            If UCase(SearchField) = UCase(strSearchFor) Then
                Return True
            End If
        Next

        Return False

    End Function

答案 8 :(得分:-3)

有趣的是,这个解决方案可能会破解,但是一个解决方法: 寻找名为KeyWorks.accdb的数据库,该数据库必须存在:

运行:

Dim strDataPath As String = GetSetting(“KeyWorks”,“dataPath”,“01”,“”)'从注册表中获取

如果不是strDataPath.Contains(“KeyWorks.accdb”)那么......等等。

如果我的数据库名为KeyWorksBB.accdb,则If语句会发现这是可接受的并退出if语句,因为它确实找到了KeyWorks和accdb。

如果我用单引号(“'KeyWorks.accdb'”)包围If语句限定符,它现在按顺序查找所有连续字符,并且因为它不匹配而输入If块。