我想知道如何检查字符串是否包含“value1”或“value2”? 我试过这个:
If strMyString.Contains("Something") Then
End if
这样可行,但事实并非如此:
If strMyString.Contains("Something") or ("Something2") Then
End if
这给了我一个错误,即从字符串到Long的转换无法完成。
如果我将or ("Something2")
放在第一个括号内,它会给我一个错误,即字符串无法转换为布尔值。
那么如何检查字符串是否包含“string1”或“string2”而不必编写太多代码?
答案 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块。