it-swarm.com.de

Wie ignoriere ich bei der Verwendung von string.text.contains?

Ich versuche herauszufinden, wie man prüft, ob eine Zeichenfolge eine andere enthält, während die Groß-/Kleinschreibung mit .text.contains ignoriert wird.

So wie es jetzt steht Wenn ich das mache:

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

Es wird nur dann eine Übereinstimmung zurückgegeben, wenn es sich um denselben Fall handelt. Wenn der Benutzer "Mein Haus ist kalt" eingetippt hat, wäre dies keine Übereinstimmung. 

Wie kann ich das machen? Wenn dies nicht möglich ist, könnte ich wahrscheinlich nur Regex mit ignorecase verwenden. Jede Hilfe wäre dankbar.

20
user1632018

Gemäß Microsoft können Sie die Suche ohne Berücksichtigung der Groß- und Kleinschreibung in Zeichenfolgen mit IndexOf anstelle von Contains durchführen. Wenn das Ergebnis der IndexOf-Methode einen Wert zurückgibt, der größer als -1 ist, bedeutet dies, dass die zweite Zeichenfolge eine Unterzeichenfolge der ersten ist.

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

Sie können auch andere Varianten ohne Unterscheidung von StringComparison verwenden.

34
Marcel Gosselin

Ich bin kein vb.net-Programmierer, aber laut Microsoft können Sie den Kleinbuchstaben/Großbuchstabenwert des Textes mit den String-Methoden ToUpper() oder ToLower() ermitteln. Sie können das dann mit "my house is cold" oder "MY HOUSE IS COLD" vergleichen.

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

Ich persönlich habe gerade gebraucht:

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

sie könnten genauso gut ToUpper verwenden.

Vorsichtsmaßnahme: Wenn Sie Türkisch oder andere Sprachen vergleichen, haben ToLower () und ToUpper () einen Optionsparameter für "CultureInfo", mit dem Sie sicherstellen können, dass verschiedene Sprachen richtig gehandhabt werden , oder Sie können den Schritten aus der ToLower-Dokumentation von Microsoft folgen, um CultureInfo hinzuzufügen, um den ToLower-Kontext in der Sprache anzuzeigen, die Sie bearbeiten möchten. 

ToLower () mit CultureInfo-Dokumentation

ToUpper () mit CultureInfo-Dokumentation

2
Adam Pine

Ich habe dieses Problem mit .toUpper gelöst

Zum Beispiel:

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

Gleiches Verfahren mit .toLower

1
xcrookedxedge

Oder Sie können RegularExpressions wie folgt verwenden. 

Importieren Sie zunächst die RegularExpressions:

Imports System.Text.RegularExpressions

dann versuche diesen Code:

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

verwenden Sie das InStr-Beispiel. "enthält" schlägt fehl, wenn Äthervergleich nichts ist.

'wenn wir etwas gefunden haben ...

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

Beep

End If   

                                               '
0
Sandy

so löste ich mein Problem, String.Contains zwischen Groß- und Kleinschreibung zu unterscheiden.

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

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

Bei meinem speziellen Problem befand sich die von mir überprüfte Zeichenfolge in einer TextBox.

Ich hoffe das hilft. 

0
Elias

Was ist damit?

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