我需要在一个单词中找到元音的数量。但是,当我比较单词中的字母是否是元音时,
例如,我所做的就像下面那样,
if( word[i] == 'a' || word[i] == 'e' || word[i] == 'i' || word[i] == 'u'
......)//其余部分被省略
if
语句太长了。有没有办法将它们与正则表达式或类似正则表达式的比较进行比较,并给出字符串中元音出现次数?
答案 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)
如果你想要计数元音使用正则表达式,你可以试试。
int count = word.replaceAll("[^aeiouAEIOU]","").length();
首先计算单词长度,然后使用此
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);
}
}