为什么我的Javascript trim功能不起作用?

时间:2013-09-10 02:03:12

标签: javascript whitespace trim removing-whitespace

我正在使用此功能来构建一个猪拉丁语翻译器,除了.trim()部分外,似乎已经找到了所有内容。我该怎么办?

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

lines[i].trim();行上似乎没有任何事情发生。空格仍然成为拆分数组中的\ n项。

我应该更改什么才能删除空格?

2 个答案:

答案 0 :(得分:10)

lines[i].trim();不会修改当前字符串(请参阅doc here)。它返回一个新字符串。

如果要修剪当前字符串,则需要执行以下操作:

lines[i] = lines[i].trim();

答案 1 :(得分:2)

根据评论,这里是使用正则表达式的猪拉丁语的基本版本,它使用小写字符串,但可以调整以处理混合的大小写:

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"