Pig Latin Parsing

demonstrating some basic string parsing using regular expressions.

by Andrew Holloway

JavaScript

// Pig Latin Processing (using regular expressions) 

var vowel_re = /[aeiou]/i;

function convertWord(word) {
	let convertedWord = word;
  
  // Find where the first vowel is: this character marks where to do 
  // the split
  const firstVowelPos = word.search(vowel_re);
  
  // if it's not the first character or missing, move the split
  // to the end and add the pig latin suffix
  if (firstVowelPos > 0) {
  	// vowel is not first character
    convertedWord = word.slice(firstVowelPos) + word.slice(0, firstVowelPos) + 'ay';
    
  } else {
  	// vowel is first character, so use the whole word with fixed suffix
    convertedWord = word + 'yay';
  }
  
	return convertedWord;
}

function convertSentence(sentence) {
	let words = sentence.split(/\s+/);
  
  words = words.map(word => {    
    const suffix = word.match(/[^a-zA-Z]$/) || '';
    const prefix = word.match(/^[^a-zA-Z]/) || '';
    const strippedWord = word.replace(prefix, '').replace(suffix, '');
    // word.replace(expression, '$1 $2 $3'); // with capture
    
  	return prefix + convertWord(strippedWord) + suffix;
  });
  
  return words.join(' ');
}