Why does my Javascript trim Function not work?
Asked Answered
D

2

7

I am using this function to build a pig latin translator and seem to have everything figured out except for the .trim() part. What should I do different?

function ParseText() 
{

  var  myText = "asdf\n hat\n cat dog\n apple";

  var lines = myText.split("\n");
  var results = "";

  for (var i = 0, len = lines.length; i < len; i++) {
    lines[i].trim();
    var words = lines[i].split(" ");

    for (var j = 0, lenght = words.length; j < lenght; j++) {
      var word = words[j];

      if (word.charAt(0) == "a" || word.charAt(0) == "e" ||  word.charAt(0) == "i" || word.charAt(0) == "o" || word.charAt(0) == "u" || word.charAt(0) == "y")

      {
        results = results + word + "ay ";
      }else {
        var mutated = word.substring(1, word.length);
        mutated = mutated + word.charAt(0)+ "ay ";
        results = results + mutated;
      }
    }
    results = results + "\n";
  }
  return results;
}

On the line lines[i].trim(); nothing seems to happen. the whitespace still becomes a \n item in the split array.

What should I change to remove the whitespace?

Dubbin answered 10/9, 2013 at 2:3 Comment(3)
Have you considered regular expressions? Just saying...Romona
if it is truly the perfect use case. then I need to see the perfect example ;-)Dubbin
Check my answer, maybe not perfect, but way shorter.Romona
F
19

lines[i].trim(); does NOT modify the current string (see the doc here). It returns a new string.

If you want to trim the current string, then you need to do this:

lines[i] = lines[i].trim();
Frontward answered 10/9, 2013 at 2:23 Comment(0)
R
2

As per comments, here's very basic version of pig latin using regex that works with lowercase strings but it can be adjusted to handle mixed lower and upper case:

function pigLatin(str) {
  return str
    .toLowerCase() // make sure string is lowercase
    .replace(/\b[aeiuo]\w+\b/g, '$&way') // starts with vowel
    .replace(/\b([^aeiou\s])(\w+)\b/g, '$2$1ay'); // starts with consonant
}


// Example: 
var str = 'hello world egg plant yellow';
console.log(pigLatin(str)); //=> "ellohay orldway eggway lantpay ellowyay"
Romona answered 10/9, 2013 at 2:18 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.