Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数一数单词中的元音_Java_Regex_Character - Fatal编程技术网

Java 数一数单词中的元音

Java 数一数单词中的元音,java,regex,character,Java,Regex,Character,我需要找出一个单词中元音的数量。然而,当我比较单词中的字母是否为元音时 例如,我所做的就像下面的一样 if(word[i]='a'| | word[i]='e'| | | word[i]='i'| | | word[i]='u'…)//其余部分省略 if语句太长。有没有办法将它们与正则表达式或类似正则表达式的比较进行比较,并给出字符串中元音出现的次数 如果要查找所有元音 String line = "Ahis order was placed for QT3000! OK?"; String p

我需要找出一个单词中元音的数量。然而,当我比较单词中的字母是否为元音时

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

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


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

如果要查找所有元音

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
like

String line = "Ahis order was placed for QT3000! OK?";
String pattern = "(?i)[aeiou]";
System.out.println(line.replaceAll(pattern, "").length());
注意:-
(?i)
是内联修饰符,表示后面的任何模式都不区分大小写

方法1: 如果你想用正则表达式计算元音,你可以试试

int count = word.replaceAll("[^aeiouAEIOU]","").length();
方法2: 首先计算字长,然后使用此

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

然后从原来的单词中减去。您将得到元音的计数。

这里是另一个答案,尽管比另一个答案效率稍低:

 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);
}
import java.util.Scanner;
公共类元音计数{
公共静态void main(字符串参数[]){
扫描仪sc=新的扫描仪(System.in);
System.out.println(“输入字符串”);
字符串输入=sc.nextLine();
字符串inputup=input.toUpperCase();
int元音=0;

对于(int i=0;i您实际希望replaceAll方法更改原始文本还是仅在替换的情况下提供,出现的次数将是该数字?@drJava如果要替换原始字符串,可以使用
line=line.replaceAll((?i)[^aeiou],”)
不,我不想要。原文应该保持不变。你的答案是正确的,但我可以在5分钟内接受它作为正确答案:)Stackoverflow things。与rock的答案有什么不同/更好的地方?这看起来就像一个错误。