Why does my Javascript trim Function not work?

jth41 picture jth41 · Sep 10, 2013 · Viewed 20.6k times · Source

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?

Answer

jfriend00 picture jfriend00 · Sep 10, 2013

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();