如何从给定的html字符串中删除前导和尾随空格?

Sun*_*nil 172 javascript removing-whitespace

我有以下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>
Run Code Online (Sandbox Code Playgroud)

Chr*_*ker 238

请参阅String方法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);
Run Code Online (Sandbox Code Playgroud)

编辑

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

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

...这将把方法注入到仍然在游泳池浅水区游泳的那些浏览器的原生原型中.

  • 我不确定你认为"白色空间"是什么,但修剪将删除一般的空格(换行符,空格,制表符等),而不仅仅是空格字符. (8认同)
  • 我更喜欢正则表达式,因为它并不是所有浏览器都支持(*cough cough*IE <9). (3认同)
  • 修剪方法不会修剪空格,而只会修剪空格。所以这不是我想要的。 (2认同)
  • @bsa我开始理解他在视觉上意味着"白色空间",就像在"呈现HTML的结果中的视觉空白区域"中那样,然后他在上面的评论中添加"除了由'br`标签引起的换行" . (2认同)
  • 为什么170个赞成票的答案上没有复选标记?所以有时让我感到困惑. (2认同)
  • 由于语义,我从根本上误解了他的问题。甚至试图解决去除br之外的视觉空白的唯一答案是Anthony。如果OP仅处理使元素为空的`&nbsp;`,则可以使用几种方法,而Anthony's是一种。我不支持在HTML上使用正则表达式,因此我不会使用Anthony的方法(我赞成DOM操作),但是他是唯一能够正确理解OP问题的人。我留下我的答案,因为它似乎很有帮助,但这不是OP的答案。我对它的工作方式很好。 (2认同)

Jha*_*bub 62

var str = "  my awesome string   "
str.trim();    
Run Code Online (Sandbox Code Playgroud)

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

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

  • "[]"与""完全相同.恰好一个字符的字符分组是......好吧......恰好是一个字符. (2认同)
  • @Flimzy:是的,写 `[\t\n\ ]` 或只写 `\s` 而不是没有意义的 `[ ]` 会更有意义。 (2认同)

San*_*nne 11

string.replace(/^\s+|\s+$/g, "");
Run Code Online (Sandbox Code Playgroud)


Ant*_*ony 9

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

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

Trimming using JavaScript<br /><br /><br /><br />all leading and trailing white spaces 
Run Code Online (Sandbox Code Playgroud)

Trimming using JavaScript<br /><br /><br /><br />all leading and trailing white spaces 
Run Code Online (Sandbox Code Playgroud)

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

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

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


Jai*_*mez 6

如果您正在处理多行字符串,例如代码文件:

<html>
    <title>test</title>
    <body>
        <h1>test</h1>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

并希望替换所有前导线,以获得此结果:

<html>
<title>test</title>
<body>
<h1>test</h1>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

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

string.replace(/^\s+|\s+$/gm, '');
Run Code Online (Sandbox Code Playgroud)

文档的相关引用:

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


Cha*_*age 6

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

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

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

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

var address = "  No.255 Colombo  "
address.replace(/\s/g,"");
Run Code Online (Sandbox Code Playgroud)

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