2013-02-20 83 views
7

有沒有辦法檢查一個字符串是否包含某些內容而不區分大小寫?如何在字符串中使用contains和equalsIgnoreCase

例如:(此代碼是無效的,它只是讓你得到我的問題有基本的瞭解)

String text = "I love ponies"; 

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

編輯: --------仍然沒有工作

哦,原來它不工作。這是我正在使用的。 (它是一個遊戲詛咒過濾器)

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."); 
    } 
} 

它與小寫,但不大寫。

+1

的可能重複[?是在java.lang.String中區分大小寫的contains方法(http://stackoverflow.com/questions/86780/is-the-contains-method-in-java-lang-string-case-sensitive) – Eric 2013-02-20 04:29:53

+0

由於您是StackOverflow的新手,請不要忘記[標記最佳選項作爲答案](http: //meta.stackexchange.com/a/5235/182862) – 2013-02-20 05:06:00

+0

它仍然無法正常工作,因爲您沒有正確閱讀答案。如果你想使用這種風格,然後再讀Anubhooti Pareek的答案。你需要event.getMessage()。toLowerCase()。contains(otherString.toLowerCase()) – 2013-02-20 05:08:04

回答

-6

您可以檢查兩次這樣

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

這是錯誤的:'s =「aBc」','text =「AbC」'。 [兩者都將是'false'。](http://ideone.com/Y2Zh6u) – Eric 2013-02-20 04:30:35

+0

我知道這很簡單,我只是過分複雜。大聲笑 – 2013-02-20 04:30:46

+1

@海登泰勒不理這個答案這是錯的 – 2013-02-20 04:32:11

3

如果區分大小寫是你唯一的問題轉換到一切小寫

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

更新: 你的代碼中使用:

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

在所有條件下

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

或者另一種方式是

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

我喜歡第一個解決方案。非常順利:) – TPRammus 2017-04-25 15:37:34

5

如果使用StringUtils#containsIgnoreCaseApache Commons

如果您不能添加第三方庫,你仍然可以使用它的代碼會更容易因爲可以自由使用。檢查online source code

測試:

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")); 
    } 
} 

輸出:

true 
true 
true 
true 
false 
false 
+2

如果OP不希望添加第三方庫,則可以給出替代方案+1 :) – LGAP 2013-02-20 04:43:59

相關問題