Как к ignorecase, используя 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

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

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

17
добавлено отредактировано
Просмотры: 1
de

12 ответы

Согласно Microsoft можно сделать поиски без учета регистра в последовательностях с , IndexOf вместо Содержит . Таким образом, когда результат 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

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

31
добавлено
ahh, это точно, что я искал. Я знал их, был, был другой метод последовательности, который мог использоваться, чтобы сравнить последовательности. Большое спасибо. Я ценю его.
добавлено автор user1632018, источник

Согласно Microsoft можно сделать поиски без учета регистра в последовательностях с , IndexOf вместо Содержит . Таким образом, когда результат 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

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

31
добавлено
ahh, это точно, что я искал. Я знал их, был, был другой метод последовательности, который мог использоваться, чтобы сравнить последовательности. Большое спасибо. Я ценю его.
добавлено автор user1632018, источник

Я не vb.net программист, но согласно Microsoft, можно получить строчную/заглавную ценность текста, используя методы последовательности ToUpper() или ToLower() . Можно тогда выдержать сравнение, это с "мой дом холодно" , или "МОЙ ДОМ ХОЛОДНЫЙ" .

Dim myhousestring As String = "MY HOUSE IS COLD"
If txt.Text.ToUpper.Contains(myhousestring) Then
    Messagebox.Show("Found it")
End If
11
добавлено
Мне нравится это решение лучше.
добавлено автор J. Chang, источник
Это вызывает проблемы w/глобализация определенно w/турецкий язык i. I' d быть осторожным w/этот метод.
добавлено автор jt000, источник

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

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

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

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

ToLower() with CultureInfo documentation

ToUpper() with CultureInfo documentation

1
добавлено
еще лучше. лай.
добавлено автор J. Chang, источник
Вопрос doesn' t, кажется, упоминают, что это должно поддержать турецкий язык... особенно, когда мы сравниваем текст с английским языком... Равнодушная Культура сравнивает isn' t собирающийся переводить от турецкого языка до английского языка, и ЗАТЕМ выдерживать сравнение, it' s просто собирающийся сравнивать знаки.
добавлено автор Adam Pine, источник
Это вызывает проблемы w/глобализация определенно w/турецкий язык i. I' d быть осторожным w/этот метод.
добавлено автор jt000, источник

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

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

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

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

ToLower() with CultureInfo documentation

ToUpper() with CultureInfo documentation

1
добавлено
еще лучше. лай.
добавлено автор J. Chang, источник
Вопрос doesn' t, кажется, упоминают, что это должно поддержать турецкий язык... особенно, когда мы сравниваем текст с английским языком... Равнодушная Культура сравнивает isn' t собирающийся переводить от турецкого языка до английского языка, и ЗАТЕМ выдерживать сравнение, it' s просто собирающийся сравнивать знаки.
добавлено автор Adam Pine, источник
Это вызывает проблемы w/глобализация определенно w/турецкий язык i. I' d быть осторожным w/этот метод.
добавлено автор jt000, источник

Я решил эту проблему с .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

1
добавлено
Ну, похож, у вас теперь также есть привилегия для это ... Используйте его, но мудро!
добавлено автор Pierre.Vriens, источник
Жаль it' s немецкое слово. Commata имеет в виду Запятые. Так"", это только importan в моем коде. Но я удалил его, чтобы не распространить беспорядок.
добавлено автор xcrookedxedge, источник
Danke fü r десять кубометров +1! Я имею в виду: Спасибо за +1
добавлено автор xcrookedxedge, источник

Я решил эту проблему с .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

1
добавлено
Ну, похож, у вас теперь также есть привилегия для это ... Используйте его, но мудро!
добавлено автор Pierre.Vriens, источник
Жаль it' s немецкое слово. Commata имеет в виду Запятые. Так"", это только importan в моем коде. Но я удалил его, чтобы не распространить беспорядок.
добавлено автор xcrookedxedge, источник
Danke fü r десять кубометров +1! Я имею в виду: Спасибо за +1
добавлено автор xcrookedxedge, источник

Что относительно этого?


Function InStr(s As String, find As String) As Boolean
    Return s.ToLower.Contains(find.ToLower)
End Function
0
добавлено

это - то, как я решил свою проблему создания Последовательности. Содержит становятся нечувствительными к регистру.

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

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

Для моего специфического вопроса последовательность, которую я проверял, была размещена в TextBox.

Я надеюсь, что это помогает.

0
добавлено

Или можно использовать 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
0
добавлено
это похоже на излишество
добавлено автор beppe9000, источник

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

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

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

Beep

End If   

                                               '
0
добавлено
InStr' s первый параметр isn' t необходимый в этом случае, и вы могли бы хотеть подойти свои входные параметры с вопросами. Я также don' t думают, что это - случай-insensative согласно MSDN?
добавлено автор Tom, источник

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

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

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

Beep

End If   

                                               '
0
добавлено
InStr' s первый параметр isn' t необходимый в этом случае, и вы могли бы хотеть подойти свои входные параметры с вопросами. Я также don' t думают, что это - случай-insensative согласно MSDN?
добавлено автор Tom, источник