字符检查

时间:2010-10-13 07:06:47

标签: java

if(c =='a'|| c =='e'|| c =='i'|| c =='o'|| c =='u'){         计数++;

当我给出上述陈述时,只有当给定的单词是小写时(即:输入:朋友输出2个元音),它才会返回单词中元音的数量。我想知道即使我给大写或混合它应该返回元音的数量。怎么做?

10 个答案:

答案 0 :(得分:9)

一种简单的方法,无需进行10次比较即可完成此操作:

if ("aeiouAEIOU".indexOf(c) != -1) { count++; }

答案 1 :(得分:6)

Here有一个完整的例子 - 注意他们在检查元音之前将字符串转换为小写。

您还可以尝试使用不区分大小写的正则表达式,例如http://www.shiffman.net/teaching/a2z/regex/

String regex = "[aeiou]";               
Pattern p = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);   
int vowelcount = 0;
Matcher m = p.matcher(content);         // Create Matcher
while (m.find()) {
  //System.out.print(m.group());
  vowelcount++;
}

答案 2 :(得分:3)

如果你想获得大写或小写,一个简单的方法似乎如下:

迭代单词中的所有字符并执行以下测试:

if (c=='a' || c=='e' || c=='i' || c=='o' || c=='u'
|| c=='A' || c=='E' || c=='I' || c=='O' || c=='U') 
   { count++ };

答案 3 :(得分:1)

您可以使用以下测试:

Character.toLowerCase(c) == 'a'

代替。

答案 4 :(得分:1)

我告诉你一件事,如果你把out out放在大写中然后在你的代码中接受放弃小写。

如果字符串str ='FRIEND'

handle str.Tolower(); 请试试这个我认为你的问题已经解决了。

答案 5 :(得分:1)

不是最有效的解决方案,但可能是最短的解决方案? :)

int vowelCount = (inputString+" ").split("(?i)[aoeuiy]").length - 1
是的,我是唯一一个把'y'视为一个狂欢的人吗? ;)

答案 6 :(得分:1)

怎么样:

if (Arrays.asList('a', 'e', 'i', 'o', 'u').contains(Character.toLowerCase(c))) {
   ...
}

我也会静态最终列出。

答案 7 :(得分:1)

这是一个非常简单的实用程序类:

public class Main {
    public static int countChars(String string, Character... characters) {
        return countChars(string, new HashSet<Character>(Arrays.asList(characters)));
    }

    public static int countChars(String string, Set<Character> characters) {
        int count = 0;
        for(int i = 0; i < string.length(); i++){
            if(characters.contains(string.charAt(i))){
                count++;
            }
        }
        return count;
    }

    public static int countCharsIgnoreCase(String string, Character... characters) {
        return countCharsIgnoreCase(string, new HashSet<Character>(Arrays.asList(characters)));
    }

    public static int countCharsIgnoreCase(String string, Set<Character> characters) {
        Set<Character> finalCharacters = new HashSet<Character>();
        for (Character character : characters) {
            finalCharacters.add(Character.toUpperCase(character));
            finalCharacters.add(Character.toLowerCase(character));
        }

        return countChars(string, finalCharacters);
    }
}

code on ideone

答案 8 :(得分:1)

使用Guava的CharMatcher

private final CharMatcher vowels = CharMatcher.anyOf("aeiouAEIOU");

...

// somewhere in your method:
if (vowels.matches(c)) {
    ...
}

答案 9 :(得分:1)

尚未看到Set: - (

  static Character charvowels[] = { 'A','I','U','E','O','a','i','u','e','o' };
  static Set<Character> vowels = new HashSet<Character>(Arrays.asList(charvowels));
  ...
  public void countVowel(char c) {
    if (vowels.contains(c)) count++;
  }