2014-05-10 36 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

相关问题