if(c =='a'|| c =='e'|| c =='i'|| c =='o'|| c =='u'){ 计数++;
当我给出上述陈述时,只有当给定的单词是小写时(即:输入:朋友输出2个元音),它才会返回单词中元音的数量。我想知道即使我给大写或混合它应该返回元音的数量。怎么做?
答案 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);
}
}
答案 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++;
}