2014-05-10 80 views
-1

我想問你的幫助,關於這個代碼。我試圖做一些特定的單詞的編碼,如「微軟」等(隨機的,只是爲了學習這項技術)。我已經成功地做了所有事情,但是爲了讓這種搜索詞的情況變得更爲複雜。下面是代碼:如何在這種特殊情況下刪除區分大小寫?

public class BannedWords { 

public static String returnStars(int length){ 
    String stars = ""; 
    String addStar = "*"; 
    for (int i = 1; i<=length; i++){ 
     stars += addStar; 
    } 
    return stars; 
} 
public static void main(String[] args) { 
    String textString = "Microsoft announced its next generation Java compiler today." 
      + " It uses advanced parser and special optimizer for the Microsoft JVM."; 
    StringBuilder text = new StringBuilder(textString); 
    String bannedWords = "Java, JVM, Microsoft"; 

    String [] bWordsArr = bannedWords.split("[, ]+"); 

    for(int i = 0; i<bWordsArr.length; i++){ 
     int index = textString.indexOf(bWordsArr[i]); 
     while(index != -1){ 
     text = text.replace(index, index+bWordsArr[i].length(), returnStars(bWordsArr[i].length())); 
     index = textString.indexOf(bWordsArr[i], index +1); 

     } 
    } 
     System.out.println(text.toString()); 
    } 
} 

我需要尋找的「Java」,「JVM」和「微軟」的話,無論他們的情況下,即使我們嘗試「微軟」它應該工作,但幾個小時後,思考和嘗試使用toUpperCase(),toLowerCase()來做到這一點,我無法找到如何做到這一點。你有什麼想法 ?

事先謝謝! :)

+0

你用'toUpperCase()'和'toLowerCase()'做了什麼沒有用? – awksp

+0

'String.equalsIgnoreCase()'可能很有用。 – csmckelvey

+0

可能重複[如何在Java中替換不區分大小寫的子字符串](http://stackoverflow.com/questions/5054995/how-to-replace-case-insensitive-literal-substrings-in-java) –

回答

0

使用indexOf()時,toLowerCase()會將檢查的文本轉換爲小寫。然後,您必須將您的搜索條件置於小寫。

String text = "Java is a good programming language."; 
int index = text.toLowerCase().indexOf("java"); 

您還可以使用toUpperCase(),只需把您的搜索字詞大寫。

0

其實你應該使用equalsIgnoreCase。這是比較字符串的正確方法,無論他們的情況如何。而且您也不必將原始字符串修改爲大寫或小寫以執行檢查。我希望它可以幫助:)

yourString.equalsIgnoreCase(anotherString) 
+0

謝謝你的迴應。然而,這並不會對我的情況有所幫助,因爲我不會讓他們陷入困境,所以我只需要抑制大小寫敏感。無論如何,這可能會有一些幫助。 – Kirev

相關問題