23

我试图弄清楚如何在使用.text.contains 忽略大小写的同时检查一个字符串是否包含另一个字符串。

就目前而言,如果我这样做:

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

只有在完全相同的情况下才会返回匹配项。因此,如果用户键入“我的房子很冷”,则不会匹配。

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

4

9 回答 9

42

根据微软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的其他不区分大小写的变体。

于 2012-12-28T03:29:11.487 回答
15

我不是 vb.net 程序员,但根据Microsoft的说法,您可以使用字符串方法ToUpper()ToLower(). 然后,您可以将其与"my house is cold"or进行比较"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
于 2012-12-28T03:27:37.443 回答
5

我个人只是使​​用过:

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

您也可以使用 ToUpper。

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

ToLower() 与 CultureInfo 文档

ToUpper() 与 CultureInfo 文档

于 2016-06-08T14:16:16.260 回答
2

我用 .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 相同的过程

于 2017-03-27T10:01:44.673 回答
0

这就是我解决使 String.Contains 不区分大小写的问题的方法。

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

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

对于我的特定问题,我正在检查的字符串位于 TextBox 中。

我希望这有帮助。

于 2013-10-18T22:56:16.097 回答
0

或者你可以像这样使用正则表达式。

首先,导入正则表达式:

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
于 2015-12-30T02:00:33.080 回答
0

那这个呢?

<Runtime.CompilerServices.Extension>
Function InStr(s As String, find As String) As Boolean
    Return s.ToLower.Contains(find.ToLower)
End Function
于 2016-07-23T13:50:07.927 回答
0

使用 InStr 示例。如果以太比较什么都不是,“包含”失败。

'如果我们发现了什么...

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

Beep

End If   

                                               '
于 2017-06-23T13:36:18.840 回答
0

我使用下面的代码来搜索/确认 TEXTBOX1 中的字符串是否在“c:\testsearch.txt”中。

    Imports System.IO

Private Function sinf(path As String, match As String) As Boolean 
    Dim s As String = File.ReadAllText(path).ToLower
    Return s.Contains(match.ToLower)
End Function

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim st As String
    st = TextBox1.Text
    If sinf("c:\testsearch.txt", st) = True Then 
        MsgBox("Found if")
    Else
        MsgBox("Try again")
    End If
End Sub
于 2020-10-10T13:37:12.537 回答