如何在这种特殊情况下消除区分大小写?

时间:2014-05-10 15:59:30

标签: java string text case stringbuilder

关于此代码,我想请求您的帮助。我正在尝试对特定单词进行某种编码,例如“Microsoft”等(随机的,只是为了学习该技术)。我已经成功地完成了所有事情,但是为了使这个搜索单词的kinf案例具有分析性。这是代码:

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”和“Microsoft”字样,不管它们的情况如何,即使我们尝试“MiCrosoFt”它应该可以工作,但经过几个小时的思考并尝试使用toUpperCase (),toLowerCase(),我无法找到如何做到这一点。你有什么想法吗?

事先谢谢你! :)

2 个答案:

答案 0 :(得分:0)

使用indexOf()时,toLowerCase()会将选中的文本转换为小写。然后,您必须将搜索字词设为小写。

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

您也可以使用toUpperCase(),只需将搜索字词设为大写。

答案 1 :(得分:0)

实际上你应该使用 equalsIgnoreCase 。这是比较字符串的正确方法,无论其情况如何。而且您也不必将原始字符串修改为大写或小写以执行检查。我希望它有所帮助:)

yourString.equalsIgnoreCase(anotherString)