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

时间:2016-07-08 02:42:42

标签: java compare character ascii diacritics

首先,请原谅我的英语不好。这不是我的母语(这是我的一个问题,你稍后会看到原因)。

我正在用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...");
} 

我正在使用Scanner作为输入法。

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

真的我不知道该怎么做。我尝试过使用Ascii值(193 =Á),我尝试在测试字符串String test = "AEIOUaeiouÁÉÍÓÚáéíóú";中编写带有重音符号的de元音。

没有任何作用。我将非常感谢能帮助我的人。

PS,我不允许使用数组。

1 个答案:

答案 0 :(得分:1)

计算“元音”的最简单方法就是单行:

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

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