【问题标题】:Why does my Javascript trim Function not work?为什么我的 Javascript 修剪功能不起作用?
【发布时间】:2013-09-13 14:48:09
【问题描述】:

我正在使用这个函数来构建一个猪拉丁语翻译器,并且似乎除了.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 项。

我应该改变什么来删除空格?

【问题讨论】:

  • 你考虑过正则表达式吗?只是说...
  • 如果它真的是完美的用例。那么我需要看看完美的例子;-)
  • 检查我的答案,也许不完美,但更短。

标签: javascript whitespace trim removing-whitespace


【解决方案1】:

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

如果你想修剪当前字符串,那么你需要这样做:

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

【讨论】:

    【解决方案2】:

    根据 cmets,这是一个非常基本的 pig latin 版本,它使用正则表达式,可以处理小写字符串,但可以调整它以处理混合的小写和大写:

    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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多