Java替换字符串中的字符



我正在编写一种方法,用给定的字符替换字符串中的所有元音,但它不适用于具有多个元音的字符串。它适用于"脚跟",但不适用于"你好"。请帮忙。我下面的代码:

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 String replaceVowels(final String phrase,final String ch) {
return phrase.replaceAll("[aeiou]", ch);
}

这里有一种用java字符替换字符串中所有元音的方法。(?i(使其不区分大小写。"+ch从字符中获取一个字符串。

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

也可以更明确地使用以下情况:

String str = "hEllo";
char ch = 'X';
str = str.replaceAll( "[aeiouAEIOU]", "" +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);
}
}

亚历克斯回答的更好的解决方案只是添加字符串,

phrase.replaceAll("[aeiou]", ""+ch);

最新更新