Как игнорировать при использовании 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
'