如何计算字符串中的元音,包括带有重音符号的元音?

How to count vowels in a String including which have accent marks?

首先,请原谅我的英语不好。这不是我的母语(这是我的问题之一,稍后你会明白为什么)。

我正在Java中制作一个方法,建议计算字符串的元音。输入来自 windows 提示符,因为我分别使用 javac 和 java 命令进行编译和执行。

我已经写了几行代码来解决这个练习,但我无法计算带有重音符号的元音。例如。当我尝试 "canción" 时,它的输出只计算 2 个元音。

public static int countVowels(String text){
    int answer = 0;
    String test = "AEIOUaeiou";
    for (int i = 0; i < text.length(); i++)
        for (int j = 0; j < test.length(); j++)
            if (text.charAt(i) == test.charAt(j))   {
                answer++;
                break;
            }
    return answer;
}

public static void form() {
    Scanner in = new Scanner(System.in);
    System.out.println("This program counts the number of vowels.");
    int answer = 0;
    String text = "";
    while (!text.equals("-1"))  {
        System.out.print("Enter a line of text (-1 to exit): ");
        text = in.nextLine();
        answer = Character.countVowels(text);
        System.out.println("Number of vowels: " + answer);
    }
    System.out.println("Closing the program...");
} 

我正在使用扫描仪作为输入法。

我尝试比较 2 个字符串,因为我认为使用 if(text.charAt(i) == 'A') 很无聊(也许我错了)。

我真的不知道该怎么办。我试过使用 Ascii 值 (193 = Á),我试过在测试字符串 String test = "AEIOUaeiouÁÉÍÓÚáéíóú";.

中只写带重音符号的元音

没有任何效果。我会非常感谢能帮助我的人。

PS,我不允许使用数组。

计算 "vowels" 的最简单方法是这样一行:

int vowelCount = str.replaceAll("[^AEIOUaeiouÁÉÍÓÚáéíóú]", "").length();

此查找使用正则表达式并删除(替换为空白)所有不是列出的字符之一的字符(通过否定字符 class)。