I am writing a method to replace all vowels in a string with a given character, but it does not work for strings with more than one vowel. It works for "heel" but not for "hello". Please help. My code below:
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);
}
Here is one way to replace all vowels in a string with an java char. The (?i) is to make it case insensitive. The "" +ch gets a string from the char.
String str = "hEllo";
char ch = 'X';
str = str.replaceAll( "(?i)[aeiou]", "" +ch );
Could also be more explicit with case like:
String str = "hEllo";
char ch = 'X';
str = str.replaceAll( "[aeiouAEIOU]", "" +ch );
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With