用1,2,3 ... java替换所有元音

时间:2016-10-23 17:25:47

标签: java loops replace

给定一个String str,使用以下规则返回一个字符串,其中所有元音都用数字替换。

上部外壳元音应该用从1开始增加的奇数替换。例如,第一个大写元音将被替换为1,第二个元素用3替换,第三个用5替换,依此类推。

较低的套管元音应该用从2开始的增加偶数代替。例如,第一个小写元音将被替换为2,第二个用4替换,第三个用6替换,依此类推。

可能存在用作替换的数字超过一位数的情况。在这种情况下,元音应该用两个数字替换。

示例:

replaceAllVowels(" Hello")=> " H2ll4"

replaceAllVowels(" HELLO")=> " H1ll2"

replaceAllVowles("你好,这是一个很长的字符串")=> " h2ll4 th6r8 th10s 12s 14 r1618lly l20ng str22ng"

我迷失了这个。非常感谢帮助。

2 个答案:

答案 0 :(得分:1)

我决定善待你。确保你从中学到了一些东西。你想要一个方法,通过for循环遍历单词。在此for循环中,您检查每个字符。如果它是某个字符,请替换它并增加数字。

static final char[] lowerVowels = { 'a', 'e', 'i', 'o', 'u'};    
static final char[] upperVowels = { 'A', 'E', 'I', 'O', 'U' };

static boolean isUpperVowel(char ch)
{
    for (char vowel : upperVowels)
    {
        if (vowel == ch)
        {
            return true;
        }
    }
    return false;
}

static boolean isLowerVowel(char ch)
{
    for (char vowel : lowerVowels)
    {
        if (vowel == ch)
        {
            return true;
        }
    }
    return false;
}


String replaceAllVowels(String word)
{
    int oddNumber  = 1;
    int evenNumber = 2;

    for(int i = 0; i < word.length(); i++)
    {
        if(isUpperVowel())
        {
            replace it
            oddNumber += 2;
        }

        else if(isLowerVowel())
        {
            replace it
            evenNumber +=2;
        }

    }

    return word;

}

答案 1 :(得分:0)

您可以使用以下内容:

private static final char[] list = { 'A', 'E', 'I', 'O', 'U' };

public static String replaceAllVowels(String word) {
    int length = word.length();
    char[] string = new char[length];
    for (int index = 0; index < length; index++) {
        string[index] = getChar(word.charAt(index));
    }

    return new String(string);

}

public static char getChar(char character) {
    int number = isVowel(character);
    return number != -1 ? (char) (number + 48) : character;
}

public static int isVowel(char character) {
    int index = 0;
    for (char vowel : list) {
        if (vowel == character || vowel + 32 == character) {
            return index;
        }
        index++;
    }
    return -1;
}

/**
 * You can use this instead if you want
 */
private static int isVowel(char character) {
    for (int index = 0; index < list.length; index++) {
        char vowel = list[index];
        if (vowel == character || vowel + 32 == character) {
            return index;
        }
    }
    return -1;
}