I Java, hvordan sjekker jeg om en streng inneholder en delstreng (ignorerer store og små bokstaver)?

Jeg har to Stringer, str1 og str2. Hvordan sjekker jeg om str2 er inneholdt i str1, uten å ta hensyn til store og små bokstaver?

Løsning
str1.toLowerCase().contains(str2.toLowerCase())
Kommentarer (9)

Du kan bruke toLowerCase()-metoden:

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() )
}

Kall den deretter ved hjelp av:

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

Legg merke til at ved å lage din egen metode kan du gjenbruke den. Når noen så påpeker at du bør bruke contains i stedet for indexOf, har du bare en enkelt linje med kode å endre.

Kommentarer (2)

Jeg vil bruke en kombinasjon av contains-metoden og toUpper-metoden som er en del av String-klassen. Et eksempel er nedenfor:

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()));

Dette vil returnere:

Search1=true
Search2=false

Kommentarer (2)