【问题标题】:JavaScript replace() Method: remove empty space just at the end and at the beginning of the string [duplicate]JavaScript replace() 方法:删除字符串末尾和开头的空格 [重复]
【发布时间】:2012-08-17 20:57:45
【问题描述】:

可能重复:
How do I trim a string in javascript?

通过在 javascript 中使用 replace 方法,我试图删除字符串开头和结尾之间的空格:

这是我的代码:

知道我应该如何获得结果吗?

input  -> "   first second     ".replace(/[^\s|\s$]/g, ''); // " "
output -> "first second"

【问题讨论】:

标签: javascript regex replace


【解决方案1】:

您应该使用括号 () 来指定要匹配管道“|”的左侧还是右侧符号,而不是方括号。方括号实际上匹配字符集(即,[grapes] 将匹配“g”、“r”、“a”、“p”、“e”或“s”的单个实例,而 (grapes|apples)将匹配“葡萄”或“苹果”)。

另外,您缺少的另一件事是“数量”的指示。换句话说,一旦你匹配了一个空格(\s),它应该寻找多少个空格?在您的示例中,它仅匹配单个空格字符。您可能希望匹配字符串左侧和右侧存在的尽可能多的连续空格。为此,您需要在字符 \s 之后立即附加 *(匹配零个或多个)或 +(匹配一个或多个)。

所以,重写你的正则表达式:

var input = "      first second      ";
var trimmed = input.replace(/(^\s+|\s+$)/g, '');
console.log(trimmed);

您可以将这些行复制并粘贴到您的 JavaScript 控制台中,以查看是否获得了所需的输出。这里的正则表达式字面意思是:“匹配字符串开头的一个或多个空格字符,或者匹配字符串结尾紧跟的一个或多个空格字符。”然后 replace 函数获取该匹配项并将其替换为 ''。

【讨论】:

    【解决方案2】:

    对您的模式稍作修改:

    (^\s+|\s+$)
    

    然后

    var string = "     test     ";
    string.replace(/(^\s+|\s+$)/gm, '');
    

    应该工作;-)

    【讨论】:

      【解决方案3】:

      您可以使用 jQuery 修剪。

      <html>
      <head>
        <script src="http://code.jquery.com/jquery-latest.js"></script>
      </head>
      <body>
              <pre id="original"></pre>
              <pre id="trimmed"></pre>
      <script>
        var str = "         first second         ";
        $("#original").html("Original String: '" + str + "'");
        $("#trimmed").html("After trimed: '" + $.trim(str) + "'");
      </script>
      
      </body>
      </html>
      

      【讨论】:

        【解决方案4】:

        这称为修剪。

        您需要括号而不是正则表达式中的方括号,还需要在空白说明符上添加一个乘数来匹配多个空格:

        var s = "   first second     ".replace(/(^\s+|\s+$)/g, '');
        

        演示:http://jsfiddle.net/Guffa/N7xxt/

        【讨论】:

          【解决方案5】:

          在脚本开头添加:

          // Add ECMA262-5 string trim if not supported natively
          //
          if (!('trim' in String.prototype)) {
              String.prototype.trim= function() {
                  return this.replace(/^\s+/, '').replace(/\s+$/, '');
              };
          }
          

          然后使用yourString.trim() 删除字符串开头和结尾的空格。

          【讨论】:

            【解决方案6】:

            为什么要替换方法? 只需使用修剪。 IE。来自 jQuery 库

            http://api.jquery.com/jQuery.trim/

            【讨论】:

            • 导入所有的 jQuery 只是为了获得一个 .trim() 实现将是相当疯狂的。
            • 如果 OP 没有提到 jQuery,假设它没有被使用会更安全。 ) 否则,总体而言,一个很好的建议是依靠已建立的解决方案而不是发明自己的解决方案。 )
            • 当然只为一种方法导入 jQuery 是疯狂的。但它只是一个例子。 trim 方法在多个库中有很多实现。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-08-19
            • 2011-12-22
            • 2015-10-10
            • 1970-01-01
            • 2013-10-07
            • 2023-01-04
            相关资源
            最近更新 更多