Wie prüfe ich in Java, ob eine Zeichenkette eine Teilzeichenkette enthält (ohne Berücksichtigung der Groß- und Kleinschreibung)?

Ich habe zwei "Strings", "str1" und "str2". Wie prüfe ich, ob "str2" in "str1" enthalten ist, ohne die Groß-/Kleinschreibung zu berücksichtigen?

Lösung
str1.toLowerCase().contains(str2.toLowerCase())
Kommentare (9)

Sie können die Methode toLowerCase() verwenden:

public boolean contains( String haystack, String needle ) {
  haystack = haystack == null ? "" : haystack;
  needle = needle == null ? "" : needle;

  // Works, but is not the best.
  //return haystack.toLowerCase().indexOf( needle.toLowerCase() ) > -1

  return haystack.toLowerCase().contains( needle.toLowerCase() )
}

Dann rufen Sie sie mit auf:

if( contains( str1, str2 ) ) {
  System.out.println( "Found " + str2 + " within " + str1 + "." );
}

Beachten Sie, dass Sie durch die Erstellung Ihrer eigenen Methode diese wiederverwenden können. Wenn Sie dann jemand darauf hinweist, dass Sie contains anstelle von indexOf verwenden sollten, müssen Sie nur eine einzige Codezeile ändern.

Kommentare (2)

Ich würde eine Kombination aus der Methode "contains" und der Methode "toUpper" verwenden, die Teil der String-Klasse sind. Ein Beispiel ist unten zu sehen:

String string1 = "AAABBBCCC"; 
String string2 = "DDDEEEFFF";
String searchForThis = "AABB";

System.out.println("Search1="+string1.toUpperCase().contains(searchForThis.toUpperCase()));

System.out.println("Search2="+string2.toUpperCase().contains(searchForThis.toUpperCase()));

Dies wird zurückgegeben:

Search1=true
Suche2=false

Kommentare (2)