The vowel case

Dennis kestoneDennis kestone
2 min read

Solving code wars kata problem: replacing vowels with numbers.

In this problem, we are required to replace vowels in a given string with some numbers and reverse it if required. Here is the problem:

Step 1: Create a function called encode() to replace all the lowercase vowels in a given string with numbers according to the following pattern:

a -> 1
e -> 2
i -> 3
o -> 4
u -> 5

For example, encode("hello") would return "h2ll4". There is no need to worry about uppercase vowels in this kata.

Step 2: Now create a function called decode() to turn the numbers back into vowels according to the same pattern shown above.

For example, decode("h3 th2r2") would return "hi there".

Here is the simplest solution I could come up with:

First, I started with the encode and used the replaceAll() to replace all the vowels in the provided string.

function encode(string) {
  string = string.replaceAll(/a/gi,"1");
  string = string.replaceAll(/e/gi,"2");
  string = string.replaceAll(/i/gi,"3");
  string = string.replaceAll(/o/gi,"4");
  string = string.replaceAll(/u/gi,"5");
  return string;
}

The g modifier after each of the vowels is a regular expression global match and it allows the function to replace all occurrences of the specified vowel with the intended number instead of stopping at the first match.

The i modifier specifies a case-insensitive match.

The decode function is just a reversal of the encode function: just replace the numbers with the letters and vice versa.

function decode(string) {
  string = string.replaceAll(/1/gi,"a");
  string = string.replaceAll(/2/gi,"e");
  string = string.replaceAll(/3/gi,"i");
  string = string.replaceAll(/4/gi,"o");
  string = string.replaceAll(/5/gi,"u");
  return string
}

That is pretty much it.

Combined:

function encode(string) {
  string = string.replaceAll(/a/gi,"1");
  string = string.replaceAll(/e/gi,"2");
  string = string.replaceAll(/i/gi,"3");
  string = string.replaceAll(/o/gi,"4");
  string = string.replaceAll(/u/gi,"5");
  return string;
}

function decode(string) {
  string = string.replaceAll(/1/gi,"a");
  string = string.replaceAll(/2/gi,"e");
  string = string.replaceAll(/3/gi,"i");
  string = string.replaceAll(/4/gi,"o");
  string = string.replaceAll(/5/gi,"u");
  return string
}

I also found multiple solutions for the problem from other people and there somewhat slightly complicated.

Here is a link to the compilation of the other solutions.

0
Subscribe to my newsletter

Read articles from Dennis kestone directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Dennis kestone
Dennis kestone