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")); } }