Java替换字符串中的字符

Java替换字符串中的字符,java,string,algorithm,Java,String,Algorithm,我正在编写一种方法,用给定的字符替换字符串中的所有元音,但它不适用于具有多个元音的字符串。它适用于“heel”,但不适用于“hello”。请帮忙。我的代码如下: public Boolean isVowel(char ch){ char ch2 = Character.toLowerCase(ch); char[] vowels = {'a', 'e', 'i', 'o', 'u'}; for(int i = 0; i < vowels

我正在编写一种方法,用给定的字符替换字符串中的所有元音,但它不适用于具有多个元音的字符串。它适用于“heel”,但不适用于“hello”。请帮忙。我的代码如下:

public Boolean isVowel(char ch){

        char ch2 = Character.toLowerCase(ch); 
        char[] vowels = {'a', 'e', 'i', 'o', 'u'};

        for(int i = 0; i < vowels.length; i++){
            if (ch2 == vowels[i]) {
                return true;
            }
        }
            return false;
    }

    public String replaceVowels(String phrase, char ch){
        String newP = "";
        for(int i = 0; i < phrase.length(); i++){  
            char c = phrase.charAt(i);
            Boolean vowel = isVowel(c);

            if(vowel){ 
               newP = phrase.replace(c, ch);
            }
        }

        return newP;
    }
public布尔元音(char-ch){
char ch2=字符.toLowerCase(ch);
char[]元音={'a','e','i','o','u'};
for(int i=0;i<元音.length;i++){
if(ch2==元音[i]){
返回true;
}
}
返回false;
}
公共字符串替换元音(字符串短语,char-ch){
字符串newP=“”;
对于(inti=0;i
公共字符串替换元音(最后一个字符串短语,最后一个字符串ch){
返回短语.replaceAll(“[aeiou]”,ch);
}

您的问题是
newP=phrase.replace(c,ch)您正在分配最后一个值

String newP = phrase;
        for(int i = 0; i < phrase.length(); i++){
            char c = phrase.charAt(i);
            Boolean vowel = isVowel(c);

            if(vowel){
                newP = newP.replace(c, ch);
            }
        }

下面是一种用java字符替换字符串中所有元音的方法。(?i)是为了使它不区分大小写。“+ch”从char中获取一个字符串

String str = "hEllo";
char ch = 'X';
str = str.replaceAll( "(?i)[aeiou]", "" +ch );
也可以更明确地使用case,例如:

String str = "hEllo";
char ch = 'X';
str = str.replaceAll( "[aeiouAEIOU]", "" +ch );
String str = "hEllo";
char ch = 'X';
str = str.replaceAll( "[aeiouAEIOU]", "" +ch );