Java'da, bir dizenin bir alt dize içerip içermediğini (büyük/küçük harfi göz ardı ederek) nasıl kontrol edebilirim?

İki Stringim var, str1 ve str2. Büyük/küçük harfi göz ardı ederek str2nin str1 içinde yer alıp almadığını nasıl kontrol edebilirim?

Çözüm
str1.toLowerCase().contains(str2.toLowerCase())
Yorumlar (9)

toLowerCase()` yöntemini kullanabilirsiniz:

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

O zaman kullan diyelim:

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

Kendi yönteminizi oluşturarak onu yeniden kullanabileceğinize dikkat edin. Böylece, birisi indexOf yerine contains kullanmanız gerektiğini söylediğinde, değiştirmeniz gereken yalnızca tek bir kod satırı olacaktır.

Yorumlar (2)

Ben olsam String sınıfının bir parçası olan contains ve toUpper yöntemlerinin bir kombinasyonunu kullanırdım. Bir örnek aşağıdadır:

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

Bu geri dönecek:

Search1=true
Search2=false

Yorumlar (2)