VB.NET - Если строка содержит «значение1» или «значение2» - PullRequest
35 голосов
/ 16 июня 2011

Мне интересно, как я могу проверить, содержит ли строка "value1" или "value2"?Я пробовал это:

If strMyString.Contains("Something") Then

End if

Это работает, но это не так:

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

End if

Это дает мне ошибку, что преобразование из строки в Long не может быть сделано.Если я вставлю or ("Something2") в круглые скобки первого, это даст мне ошибку, что строку нельзя преобразовать в логическое значение.

Так как я могу проверить, содержит ли строка "string1" или "string2 "без необходимости писать слишком много кода?

Ответы [ 8 ]

69 голосов
/ 16 июня 2011

Вы должны сделать это так:

If strMyString.Contains("Something") OrElse strMyString.Contains("Something2") Then
    '[Put Code Here]
End if
11 голосов
/ 16 июня 2011

Вам нужно это

If strMyString.Contains("Something") or strMyString.Contains("Something2") Then
    'Code
End if
4 голосов
/ 27 июня 2011

Вот альтернативное решение, чтобы проверить, содержит ли определенная строка некоторую предопределенную строку. Он использует 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.

4 голосов
/ 16 июня 2011

В дополнение к уже предоставленным ответам будет быстрее, если вы используете OrElse вместо Or, потому что второй тест замкнут накоротко.Это особенно верно, если вы знаете, что одна строка более вероятна, чем другая, и в этом случае поместите это первым:

If strMyString.Contains("Most Likely To Find") OrElse strMyString.Contains("Less Likely to Find") Then
    'Code
End if
2 голосов
/ 16 июня 2011

У вас есть ("Something2") само по себе - вам нужно проверить его, чтобы было возвращено логическое значение:

If strMyString.Contains("Something") or strMyString.Contains("Something2") Then
0 голосов
/ 19 июня 2014

Интересно, что это решение может сломаться, но обходной путь: Ищу мою базу данных под названием KeyWorks.accdb, которая должна существовать:

Запустите это:

Dim strDataPath As String = GetSetting ("KeyWorks", "dataPath", "01", "") 'получить из реестра

Если не strDataPath.Contains ("KeyWorks.accdb"), то .... и т. Д.

Если моя база данных называется KeyWorksBB.accdb, оператор If найдет это приемлемым и выйдет из оператора if, потому что он действительно нашел KeyWorks и accdb.

Если я окружу квалификатор оператора If одинарными кавычками, например ("KeyWorks.accdb"), теперь он ищет все последовательные символы по порядку и вводит блок If, потому что он не совпадает.

0 голосов
/ 16 июня 2011
 If strMyString.Tostring.Contains("Something") or strMyString.Tostring.Contains("Something2") Then


     End if
0 голосов
/ 16 июня 2011
If strMyString.Contains("Something") or strMyString.Contains("Something2") Then

End if

Ошибка указывает, что компилятор думает, что вы хотите сделать побитовое OR для логического значения и строки. Что, конечно, не сработает.

...