【问题标题】:How to remove leading and trailing white spaces from a given html string?如何从给定的 html 字符串中删除前导和尾随空格?
【发布时间】:2012-04-19 09:28:50
【问题描述】:

我有以下 HTML 字符串。什么是 JavaScript 中用于从该字符串中删除前导和尾随空格的示例代码?

<p>&nbsp;&nbsp;</p>
<div>&nbsp;</div>
Trimming using JavaScript<br />
<br />
<br />
<br />
all leading and trailing white spaces
<p>&nbsp;&nbsp;</p>
<div>&nbsp;</div>

【问题讨论】:

  • 你真正的问题是什么?您想在文档中插入节点之前删除空格吗?
  • 我想删除所有前导空格以及所有尾随空格。非常喜欢 C# 中的 Trim 方法,除了它甚至删除了空格。
  • 所以在我的例子中,修剪后我最终应该得到以下结果:使用 JavaScript 进行修剪



    所有前导和尾随空格
  • @Sunil 我不知道你是否解决了这个问题,但你可以尝试以下解决方案之一:stackoverflow.com/questions/16708158/…

标签: javascript removing-whitespace


【解决方案1】:

01)。如果您只需要删除前导和尾随空格,请使用:

var address = "  No.255 Colombo  "
address.replace(/^[ ]+|[ ]+$/g,'');

这将返回字符串“No.255 Colombo”

02)。如果您需要删除所有空白,请使用:

var address = "  No.255 Colombo  "
address.replace(/\s/g,"");

这将返回字符串“No.255Colombo”

【讨论】:

    【解决方案2】:

    我知道这是一个非常古老的问题,但仍然没有公认的答案。我看到您希望删除以下内容:“空”的 html 标记和基于 html 字符串的空格。

    我根据您对您正在寻找的输出的评论提出了一个解决方案:

    Trimming using JavaScript<br /><br /><br /><br />all leading and trailing white spaces 
    

    var str = "<p>&nbsp;&nbsp;</p><div>&nbsp;</div>Trimming using JavaScript<br /><br /><br /><br />all leading and trailing white spaces<p>&nbsp;&nbsp;</p><div>&nbsp;</div>";
    console.log(str.trim().replace(/&nbsp;/g, '').replace(/<[^\/>][^>]*><\/[^>]+>/g, ""));

    .trim() 删除前导和尾随空格

    .replace(/&amp;nbsp;/g, '') 删除 &amp;nbsp;

    .replace(/&lt;[^\/&gt;][^&gt;]*&gt;&lt;\/[^&gt;]+&gt;/g, "")); 删除空标签

    【讨论】:

      【解决方案3】:

      如果您使用的是多行字符串,例如代码文件:

      <html>
          <title>test</title>
          <body>
              <h1>test</h1>
          </body>
      </html>
      

      并且想要替换所有前导行,以获得这个结果:

      <html>
      <title>test</title>
      <body>
      <h1>test</h1>
      </body>
      </html>
      

      您必须将multiline 标志添加到您的正则表达式中,^$ 逐行匹配:

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

      相关引用from docs:

      “m”标志表示多行输入字符串应被视为多行。例如,如果使用“m”,则“^”和“$”将从仅匹配整个字符串的开头或结尾变为字符串中任何行的开头或结尾。

      【讨论】:

        【解决方案4】:
        var str = "  my awesome string   "
        str.trim();    
        

        对于旧浏览器,使用正则表达式

        str = str.replace(/^[ ]+|[ ]+$/g,'')
        //str = "my awesome string" 
        

        【讨论】:

        • "[ ]" 与 " " 完全相同。恰好一个字符的字符组是……嗯……恰好是一个字符。
        • @Flimzy:是的,写[\t\n\ ] 或只写\s 而不是[ ] 更有意义,这没有意义。
        【解决方案5】:
        var trim = your_string.replace(/^\s+|\s+$/g, '');
        

        【讨论】:

        • 它会删除

            

           
          之类的空格吗?修剪简单的空间不是问题。它是我所追求的空白删除。
        • 它会删除空格
        【解决方案6】:

        查看字符串方法trim() - https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/Trim

        var myString = '  bunch    of <br> string data with<p>trailing</p> and leading space   ';
        myString = myString.trim();
        // or myString = String.trim(myString);
        

        编辑

        正如在其他 cmets 中所述,可以使用正则表达式方法。 trim 方法实际上只是正则表达式的别名:

        if(!String.prototype.trim) {  
          String.prototype.trim = function () {  
            return this.replace(/^\s+|\s+$/g,'');  
          };  
        } 
        

        ...这会将方法注入到那些仍在池的浅端游泳的浏览器的原生原型中。

        【讨论】:

        • 我更喜欢正则表达式方式,因为并非所有浏览器都支持它(咳嗽 IE
        • Trim 方法不会修剪空格,而只会修剪空格。所以这不是我要找的。​​span>
        • 我不确定您认为“空格”是什么,但 trim 会删除一般的空格(换行符、空格、制表符等),而不仅仅是空格字符。
        • @bsa 我开始明白他的意思是视觉意义上的“空白”,如“呈现 HTML 的结果中的视觉空白区域”,然后他在上面的评论中添加了“除了由br 标签引起的换行符”。
        • 为什么有 170 个赞的答案没有复选标记?有时让我很困惑。
        【解决方案7】:
        string.replace(/^\s+|\s+$/g, "");
        

        【讨论】:

        • 阅读问题,&amp;nbsp; 被用来代替普通的空格。最重要的是,空格包含在标签中。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-11
        • 1970-01-01
        • 2011-10-02
        相关资源
        最近更新 更多