Java - 如何只加倍元音

时间:2016-10-09 15:19:03

标签: java

我正在尝试编写能够使字符串中的所有元音加倍的代码。所以如果字符串是hello,它将返回heelloo。 这就是我目前所拥有的:

public String doubleVowel(String str)
{
    for(int i = 0; i <= str.length() - 1; i++)
    {
        char vowel = str.charAt(i);
        if(vowel == 'a' || vowel == 'e' || vowel == 'i' || vowel == 'o' || vowel == 'u')
        {

        }
    }
}

3 个答案:

答案 0 :(得分:13)

您只需拨打String.replaceAll(String, String)即可使用正则表达式,而您的方法可能为static,因为您不需要任何实例状态(也可以忘记大写元音)。像

这样的东西
public static String doubleVowel(String str) {
    return str.replaceAll("([AaEeIiOoUu])", "$1$1");
}

$1匹配()中表达的第一个(唯一)模式分组。

答案 1 :(得分:5)

您需要创建一个临时额外字符串(构建器)并将元音两次添加到该局部变量,然后将其返回:

public String doubleVowel(String str)
{
    StringBuilder sb = new StringBuilder();
    for(int i = 0; i <= str.length() - 1; i++)
    {
        char vowel = str.charAt(i);
        if(vowel == 'a' || vowel == 'e' || vowel == 'i' || vowel == 'o' || vowel == 'u')
        {
           sb.append(vowel); // add it to the string
        }
        sb.append(vowel); // add any character always, vowels have been added already, resulting in double vowels
    }
    return sb.toString();
}

答案 2 :(得分:4)

让我也为这些好的答案添加一个不涉及正则表达式或StringBuilders /长or比较的解决方案,以便您可以选择最适合您需求的解决方案。

public String doubleVowel(String str)
{
    String vow = "aeiou";

    for (int i = 0; i < str.length(); i++) {

                if (vow.indexOf(str.charAt(i)) != -1) {

                    str = str.substring(0, i + 1) + str.substring(i++, str.length());
                }

    }

   return str;
}