The challenge
Replace all vowel to exclamation mark in the sentence. aeiouAEIOU
is vowel.
Examples
replace("Hi!") === "H!!"
replace("!Hi! Hi!") === "!H!! H!!"
replace("aeiou") === "!!!!!"
replace("ABCDE") === "!BCD!"
The solution in Java code
We could use a StringBuilder
and a switch
case
as a first attempt:
public class Solution {
public static String replace(final String s) {
StringBuilder sb = new StringBuilder();
for (int i=0; i<s.length(); i++) {
switch(Character.toLowerCase(s.charAt(i))) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
sb.append("!");
break;
default:
sb.append(s.charAt(i));
break;
}
}
return sb.toString();
}
}
A more efficient method using replaceAll
:
public class Solution {
public static String replace(final String s) {
return s.replaceAll("[aeiouAEIOU]", "!");
}
}
How to use the regex
replacer
:
import java.util.regex.*;
public class Solution {
private static Pattern vowels = Pattern.compile("[aeiou]", Pattern.CASE_INSENSITIVE);
public static String replace(final String s) {
return vowels.matcher(s).replaceAll("!");
}
}
Test cases to validate our Java code solution
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import org.junit.runners.JUnit4;
public class SampleTest {
@Test
public void basicTests() {
assertEquals("H!!", Solution.replace("Hi!"));
assertEquals("!H!! H!!", Solution.replace("!Hi! Hi!"));
assertEquals("!!!!!", Solution.replace("aeiou"));
assertEquals("!BCD!", Solution.replace("ABCDE"));
}
}