使用string.text.contains时如何忽略?

use*_*018 20 .net vb.net string

我试图弄清楚如何使用.text.contains忽略一个字符串包含另一个字符串.

现在看来如果我这样做:

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

如果它是完全相同的情况,它将只返回匹配.因此,如果用户键入"我的房子很冷",那就不匹配了.

我怎样才能做到这一点?如果不可能,我可能只使用正则表达式而不是ignorecase.任何帮助,将不胜感激.

Mar*_*lin 35

根据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
Run Code Online (Sandbox Code Playgroud)

您还可以使用StringComparison的其他不区分大小写的变体.


Sna*_*fee 12

我不是一个vb.net程序员,但据微软,你可以使用字符串方法文本的小写/大写值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
Run Code Online (Sandbox Code Playgroud)

  • 这导致了全球化问题,尤其是土耳其语.我会小心这个方法. (2认同)

Ada*_*ine 5

我个人刚刚使用:

item.Text.ToLower().Contains("my house is cold")
Run Code Online (Sandbox Code Playgroud)

您也可以使用 ToUpper。

警告:如果您正在比较土耳其语或其他语言,ToLower() 和 ToUpper() 还带有一个选项参数,用于“CultureInfo”,允许您确保正确处理不同的语言。您可以使用上述解决方案,也可以按照 Microsoft 的 ToLower 文档中的步骤添加 CultureInfo,以获取有关您将要尝试操作的语言的 ToLower 上下文。

ToLower() 与 CultureInfo 文档

ToUpper() 与 CultureInfo 文档