Java 比较时忽略字符的大小写

Java 比较时忽略字符的大小写,java,string,char,Java,String,Char,这样做的目的是从用户那里得到一个句子,并确定每个元音出现的数量。大部分都是这样做的,只是我不确定如何忽略大写和小写字母,但我猜是equalsIgnoreCase或toUpperCase() 我还想知道是否有其他方法可以使用其他类的String、StringBuilder、或Character来实现这一点。我还是一个编程新手,这一章快把我累死了 int counterA=0,counterE=0,counterI=0,counterO=0,counterU=0; String se

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

我还想知道是否有其他方法可以使用其他类的
String
StringBuilder
、或
Character
来实现这一点。我还是一个编程新手,这一章快把我累死了

    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);
}
int计数器A=0,计数器E=0,计数器I=0,计数器O=0,计数器U=0;
字符串句子=JOptionPane.showInputDialog(“为元音计数输入一个句子”);

for(int i=0;iequalsIgnoreCase或toUpperCase()方法是最好(也是最简单)的选择。

因为您是在原语字符上进行比较

Character.toLowerCase(sentence.charAt(i))=='a'      
Character.toUpperCase(sentence.charAt(i))=='A' 
应该已经是Java中处理您的案例的最佳方式

但是如果你是在Stirng上比较

 sentence.substring(i,i+1).equalsIgnoreCase("a")
将更直接,但有点难读

如果数组或列表中有字符串类型,则调用

s.equalsIgnoreCase("a") 
会好得多。请注意,您现在比较的是“a”而不是“a”

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

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

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

下面看起来更具可读性

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


if(theChar='a'| | theChar='a')
?Character.toLowerCase(句子.charAt(i))='a')解决方案,由@Jaskey提供也可以。您可以将整个句子转换为大写(或小写),并逐字符进行比较。另一个选项是将字符逐个转换为大写(或小写),然后比较it.tysm以获取您的信息!我还想知道“indexOf”是否能做到这一点?这是我第一次尝试,但失败了。@ben,否。它只返回指定字符第一次出现的字符串内的索引。indexOf(int ch)的参数是一个字符,而不是一个索引。返回值是一个索引,所以不可能使用for循环,因为它总是返回第一个匹配项,而不会遍历字符串的其余部分?对不起,最后一个问题我保证@ben,当然这是可能的,这取决于你对字符串的操作方式,例如,在第一个循环中,indexOf返回4,然后你可以记住这个索引调用soFar,下一个循环,你可以调用(String.subString(soFar,s.length)).indexOf(…)。像这样的事情,这取决于你想要什么和你怎么做。但是,我们总是应该选择最容易阅读的方式。
if (myString.equalsIgnoreCase(myAnotherString))