比较时忽略char上的大写和小写

时间:2014-11-25 08:27:26

标签: java string char

这样做的目的是从用户那里得到一个句子并确定每个元音的显示数量。除了我不确定如何忽略大写和小写字母但我猜测equalsIgnoreCase或toUpperCase时,大部分都已完成。 ()。

我还想知道是否有其他方法可以使用其他类StringStringBuilderCharacter来完成此操作。我还是编程的新手,本章正在杀了我。

    int counterA=0,counterE=0,counterI=0,counterO=0,counterU=0;
    String sentence=JOptionPane.showInputDialog("Enter a sentence for vowel count");        

    for(int i=0;i<sentence.length();i++){
        if(sentence.charAt(i)=='a'){
            counterA++;}
        else if(sentence.charAt(i)=='e'){
            counterE++;}
        else if(sentence.charAt(i)=='i'){
            counterI++;}
        else if(sentence.charAt(i)=='o'){
            counterO++;}
        else if(sentence.charAt(i)=='u'){
            counterU++;}
        }   
    String message= String.format("The count for each vowel is \nA:%d\nE:%d\nI:%d\nO:%d\nU:%d",
            counterA,counterE,counterI,counterO,counterU);  
    JOptionPane.showMessageDialog(null, message);
}

}

代码

3 个答案:

答案 0 :(得分:6)

因为您正在比较原始字符

Character.toLowerCase(sentence.charAt(i))=='a'      
Character.toUpperCase(sentence.charAt(i))=='A' 

应该已经是用Java编写案例的最佳方式。

但是如果你在Stirng上进行比较

 sentence.substring(i,i+1).equalsIgnoreCase("a")

会更直接,但有点难以阅读。

如果数组或列表中有String类型,则调用

s.equalsIgnoreCase("a") 

会好得多。请注意,您现在正在与“a”而不是“a”进行比较。

如果您使用的是StringBuilder / StringBuffer,则可以拨打toString(),然后使用相同的方法。

sb.toString().substring(i,i+1).equalsIgnoreCase("a");

答案 1 :(得分:2)

equalsIgnoreCase或toUpperCase()方法是最好的(也是最简单的)选项。

答案 2 :(得分:0)

使用equalsIgnoreCase看起来比在比较之前将两个字符串转换为uppercase更具可读性。可读性胜过微优化。

下面看起来更具可读性

if (myString.toUpperCase().equals(myAnotherString.toUpperCase())) {

if (myString.equalsIgnoreCase(myAnotherString))