Как игнорировать при использовании string.text.contains?

Я пытаюсь выяснить, как проверить, содержит ли строка другую, игнорируя случай с использованием .text.contains.

Как сейчас, если я это сделаю:

 Dim myhousestring As String = "My house is cold"
    If txt.Text.Contains(myhousestring) Then
    Messagebox.Show("Found it")
    End If

Он вернет только совпадение, если это тот же самый случай. Поэтому, если пользователь набрал "мой дом холодно", это не будет соответствовать.

Как я могу это сделать? Если это невозможно, я мог бы просто использовать регулярное выражение вместо ignorecase. Любая помощь будет оценена.

Ответы

Ответ 1

В соответствии с Microsoft вы можете делать нечувствительные к регистру поисковые запросы в строках с IndexOf вместо Contains. Поэтому, когда результат метода IndexOf возвращает значение больше, чем -1, это означает, что вторая строка является подстрокой первого.

Dim myhousestring As String = "My house is cold"
If txt.Text.IndexOf(myhousestring, 0, StringComparison.CurrentCultureIgnoreCase) > -1 Then
    Messagebox.Show("Found it")
End If

Вы также можете использовать другие нечувствительные к регистру варианты StringComparison.

Ответ 2

Я не программист vb.net, но, согласно Microsoft, вы можете получить строчное/заглавное значение текста используя строковые методы ToUpper() или ToLower(). Затем вы можете сравнить это с "my house is cold" или "my house is cold".

Dim myhousestring As String = "MY HOUSE IS COLD"
If txt.Text.ToUpper.Contains(myhousestring) Then
    Messagebox.Show("Found it")
End If

Ответ 3

Лично я просто использовал:

item.Text.ToLower().Contains("my house is cold")

вы также можете использовать ToUpper.

Предостережение. Если вы сравниваете турецкий или другие языки, ToLower() и ToUpper() также принимают параметр параметра, для "CultureInfo", позволяющий обеспечить правильное обращение с различными языками. Вы можете использовать вышеупомянутое решение, или вы можете выполнить шаги из документации Microsoft ToLower, чтобы добавить в CultureInfo, чтобы получить контекст ToLower, на каком языке вы собираетесь пытаться манипулировать.

ToLower() с документацией CultureInfo

ToUpper() с документацией CultureInfo

Ответ 4

Я решил эту проблему с .toUpper

Например:

Dim UGroup as String = dr.Item(2).ToString().ToUpper
Dim s as String = ds.Item(1).ToString.ToUpper

If s.Contains(UGroup) then MsgBox("Well done!")
Else 
End Sub

Такая же процедура с .toLower

Ответ 5

вот как я решил мою проблему создания String.Contains становится нечувствительным к регистру.

Dim s as string = "My HoUsE iS cOlD".ToUpper

If s.Contains("MY HOUSE IS COLD") Then Exit Sub

Для моей конкретной проблемы строка, которую я проверял, была размещена внутри TextBox.

Надеюсь, это поможет.

Ответ 6

Или вы можете использовать RegularExpressions, как это.

Сначала импортируйте RegularExpressions:

Imports System.Text.RegularExpressions

затем попробуйте этот код:

Dim match As Match = Regex.Match(Textbox1.text,"My house is cold",RegexOptions.IgnoreCase)
If match.Success Then
   Msgbox(match.Value)
End If

Ответ 7

Как насчет этого?

<Runtime.CompilerServices.Extension>
Function InStr(s As String, find As String) As Boolean
    Return s.ToLower.Contains(find.ToLower)
End Function

Ответ 8

используйте пример InStr. "содержит" не получается, если сравнение эфира ничего.

', если мы нашли что-то...

If InStr(1, value, search, vbTextCompare) > 0 Then

Beep

End If   

                                               '