2011-06-16 65 views
30

我想知道如何檢查一個字符串是否包含「value1」或「value2」? 我嘗試這樣做:VB.NET - 如果字符串包含「value1」或「value2」

If strMyString.Contains("Something") Then 

End if 

這工作,但這並不:

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

End if 

這給我的錯誤,從字符串轉換爲長期無法做到的。 如果我把or ("Something2")放在第一個括號的內部,它會給我一個錯誤,即字符串不能轉換爲布爾值。

那麼如何檢查字符串是否包含「string1」或「string2」而不必編寫太多的代碼呢?

回答

58

你要做這樣的:

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

我會繼續前進,並將其設置爲答案,因爲你是一個新的用戶:) – 2011-06-16 10:24:46

+9

我建議使用or Orllse的短路版本。 – dbasnett 2011-06-16 11:11:14

+1

對於乾淨的代碼,請刪除strMyString.Contains(「Something2」)結尾處的星號* << --- – RicardoBalda 2015-10-22 13:41:42

2

你本身有("Something2") - 你需要對其進行測試,以便返回一個布爾值:

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

當然,這一切都有道理:) – 2011-06-16 10:02:01

11

你需要這個

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

我不敢相信我沒有嘗試這個..而且這麼快速的迴應! :) – 2011-06-16 10:01:46

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

End if 

的錯誤指示編譯器認爲你想在布爾和字符串上執行按位OR。哪一個當然不起作用。

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


    End if 
3

除了已經給出,如果您使用OrElse代替Or因爲第二個測試是短路會更快的答案。

If strMyString.Contains("Most Likely To Find") OrElse strMyString.Contains("Less Likely to Find") Then 
    'Code 
End if 
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測試

-2

有趣的是,該解決方案可以打破,但有解決方法: 尋找我的數據庫稱爲KeyWorks.accdb必須存在:

運行此:

昏暗strDataPath作爲字符串= GetSetting從( 「圖片關鍵詞」, 「數據通路」, 「01」, 「」)「獲得註冊表

如果不是strDataPath.Contains(「KeyWorks.accdb」)Then .... etc。

如果我的數據庫被命名爲KeyWorksBB.accdb,那麼If語句會找到這個可接受的並退出if語句,因爲它確實找到了KeyWorks和accdb。

如果我使用單引號(如'KeyWorks.accdb'「)包圍If語句限定符,它現在會按順序查找所有連續字符,並會因爲不匹配而進入If塊。

相關問題