2013-02-20 17 views
7

Bir dizginin büyük/küçük harfe duyarlı değilken bir şey içerip içermediğini kontrol etmenin bir yolu var mı?İçerme ve equalsIgnoreCase dizgisinde nasıl kullanılır

Örneğin

: (Bu kod size sorumu temel bir anlayışa alabilmemiz için var geçersiz)

String text = "I love ponies"; 

if(text.contains().equalsIgnoreCase("love") { 
    // do something 
} 

DÜZENLEME: -------- Hala

çalışmıyor Ooh, işe yaramıyor. İşte kullanıyorum.

public void onChat(PlayerChatEvent event) { 
    Player player = event.getPlayer(); 
    if (event.getMessage().contains("douche".toLowerCase()) || /* More words ... */) { 
     event.setCancelled(true); 
     player.sendMessage(ChatColor.GOLD + "[Midnight Blue] " + ChatColor.RED + "Please Don't Swear."); 
    } 
} 

O küçük harf ile çalışır ancak büyük harfe değil (bir oyun için bir lanet filtresi var).

+1

olası yinelenen [? Java.lang.String harfe duyarlı içinde Yöntemi İçeriyor mi] (http://stackoverflow.com/questions/86780/is-the-içerir-yöntem-in-java-lang-string-büyük/küçük harf duyarlı) – Eric

+0

StackOverflow'ta yeniyseniz, lütfen [en iyi seçeneği cevap olarak işaretleyin] (http: //meta.stackexchange.com/a/5235/182862) –

+0

Hala çalışmıyor çünkü cevapları düzgün okumadınız. Bu stili kullanmak istiyorsanız, Anubhooti Pareek'in cevabını tekrar okuyun. Event.getMessage(). ToLowerCase() 'a ihtiyacınız var. (OtherString.toLowerCase()) –

cevap

-6

harf duyarlılığı sizin tek sorun küçük harf

String text = "I love ponies"; 
String test = "LOVE"; 
if(text.toLowerCase().contains(test.toLowerCase())) 
{ 
//your code 
} 

güncelleme herşeyi dönüştürmek ise bu

text.contains(s); 
text.contains(s.toLowerCase()); 
+1

Bu yanlış: 's =" aBc "," text = "AbC" '. [Her ikisi de 'false' olacaktır.] (Http://ideone.com/Y2Zh6u) – Eric

+0

Basit olduğunu biliyordum, sadece karmaşık bir durumdaydım. lol –

+1

@Hayden Taylor hayır bu cevabı yok saymak yanlış –

3

gibi iki kez kontrol edebilirsiniz:

event.getMessage().toLowerCase().contains("douche".toLowerCase()) 

: kodunuzu kullanmak için tüm koşullarda

16
return text.toLowerCase().contains(s2.toLowerCase()); 

Veya başka bir yol olacağını

Pattern.compile(Pattern.quote(s2), Pattern.CASE_INSENSITIVE).matcher(text).find(); 
+0

İlk çözümü beğendim. Çok düzgün :) – TPRammus

5

sen, hala kodu kullanabilirsiniz üçüncü taraf kitaplığı ekleyemezseniz sen Apache Commons kütüphanede

den StringUtils#containsIgnoreCase kullanırsanız daha iyi olur çünkü kullanımı ücretsizdir. online source code'u kontrol edin.

Testi:

public class QuestionABCD { 
    public static boolean containsIgnoreCase(String str, String searchStr) { 
     if (str == null || searchStr == null) { 
      return false; 
     } 
     int len = searchStr.length(); 
     int max = str.length() - len; 
     for (int i = 0; i <= max; i++) { 
      if (str.regionMatches(true, i, searchStr, 0, len)) { 
       return true; 
      } 
     } 
     return false; 
    } 

    public static void main(String[] args) { 
     System.out.println(containsIgnoreCase("abc", "A")); 
     System.out.println(containsIgnoreCase("abc", "a")); 
     System.out.println(containsIgnoreCase("abc", "B")); 
     System.out.println(containsIgnoreCase("abc", "b")); 
     System.out.println(containsIgnoreCase("abc", "z")); 
     System.out.println(containsIgnoreCase("abc", "Z")); 
    } 
} 

Çıktı:

true 
true 
true 
true 
false 
false 
+2

+1, OP üçüncü parti kütüphanesini eklemek istemezseniz verdiğiniz alternatif için :) – LGAP

İlgili konular