用一个单词计算元音

时间:2016-05-28 09:54:10

标签: java regex character

我需要在一个单词中找到元音的数量。但是,当我比较单词中的字母是否是元音时,

例如,我所做的就像下面那样,

if( word[i] == 'a' || word[i] == 'e' || word[i] == 'i' || word[i] == 'u' ......)//其余部分被省略

if语句太长了。有没有办法将它们与正则表达式或类似正则表达式的比较进行比较,并给出字符串中元音出现次数?

3 个答案:

答案 0 :(得分:3)

如果你想找到所有元音

String line = "Ahis order was placed for QT3000! OK?";
String pattern = "(?i)[aeiou]";

Pattern r = Pattern.compile(pattern);

Matcher m = r.matcher(line);

while (m.find()) {
   System.out.println(m.group(0) );
}

如果您想查找它们出现的次数,可以使用replace之类的

String line = "Ahis order was placed for QT3000! OK?";
String pattern = "(?i)[aeiou]";
System.out.println(line.replaceAll(pattern, "").length());

注意: - (?i)是内联修饰符,表示后面的任何模式都不区分大小写

答案 1 :(得分:3)

Approch 1:

如果你想要计数元音使用正则表达式,你可以试试。

int count = word.replaceAll("[^aeiouAEIOU]","").length();

Approch 2:

首先计算单词长度,然后使用此

word = word.replaceAll("[^aeiouAEIOU]","").length();

并从原始单词中减去。你将得到元音的数量。

答案 2 :(得分:0)

这是另一个答案,虽然效率低于另一个:

 import java.util.Scanner;

public class VowelCount {
public static void main(String args[]){
    Scanner sc=new Scanner(System.in);
    System.out.println("Enter String");
    String input=sc.nextLine();
    String inputup=input.toUpperCase();
    int vowel=0;
    for(int i=0;i<=inputup.length()-1;i++) {
        char ch=inputup.charAt(i);
        if((ch=='A')||(ch=='E')||(ch=='I')||(ch=='O')||(ch=='U')) {
            vowel++;
            continue;
        }
    }
    System.out.println("No. of Vowels="+vowel);
}

}