使用jQuery抓取文本时如何去除空格?


183

我想使用jQuery来包装m​​ailto:锚定在电子邮件地址周围,但是它也抓住了CMS生成的空白。

这是我必须使用的HTML,具有的脚本以及输出的副本。

的HTML

<div class="field field-type-text field-field-email">
  <div class="field-item">
    name@example.com    </div>
</div>

jQuery JavaScript

$(document).ready(function(){
  $('div.field-field-email .field-item').each(function(){
    var emailAdd = $(this).text();
      $(this).wrapInner('<a href="mailto:' + emailAdd + '"></a>');
   });
 });

生成的HTML

<div class="field field-type-text field-field-email">
  <div class="field-items"><a href="mailto:%0A%20%20%20%20name@example.com%20%20%20%20">
    name@example.com    </a></div>
</div>

尽管我怀疑阅读此问题的其他人可能只想删除开头和结尾的空格,但考虑到这是我要包装的电子邮件地址,我还是很高兴失去所有空格。


Answers:


333

使用replacejs中的函数:

var emailAdd = $(this).text().replace(/ /g,'');

那将删除所有空格

如果你想删除的开头和结尾的空白使用jQuery的$ .trim方法:

var emailAdd = $.trim($(this).text());

11
正确,但是/ \ s / g是更清晰的模式(“ i”是多余的,而''是不寻常的形式-也可以使用/(^ \ s *)|(\ s * $)/ g的模式相当于修剪
annakata

1
你是正确的annakata,我删除了/我,因为它是多余的,因为在这种情况下区分大小写不是一个问题
安德烈亚斯格列奇

6
值得一提的是IE不会将不间断空格(&nbsp;,&#160;,&#xA0;,\ xA0,\ u00A0等)视为空白,因此/ [ \ s \ xA0] + / g对于替换所有空白可能更为可靠。
travis 2010年


69

实际上,jQuery有一个内置的trim函数:

 var emailAdd = jQuery.trim($(this).text());

有关详细信息,请参见此处


3
因为每个内置功能都必须有一个jQuery包装器
jasonszhao

24

str=str.replace(/^\s+|\s+$/g,'');


1
这将删除前导和尾随空格,例如PHP trim功能。
保罗

1
你能解释一下自己吗?
弗朗西斯科·科拉莱斯·莫拉莱斯2014年

1
@FranciscoCorralesMorales:我认为您可以在这里进行选择:了解正则表达式或不了解正则表达式。如果这样做,该表达将变得不言而喻,否则,将很难解释,因此很容易理解。因此:了解正则表达式。如果您在尝试学习它们后仍然不理解,请询问有关您不了解的确切问题。
彼得五世(Bird V.Mørch)

5
看起来像这样的/ ^ \ s + | \ s + $ / g怎么能称为“常规”?
RyanNerd '16

它们之所以称为正则表达式,是因为它们可以描述正则语言,即可以使用有限状态机进行解析的语言。实际上,最纯粹形式的正则表达式实际上是描述有限状态机的一种方式。考虑到以计算机可以理解的方式在代码中包含自动机图的难度,正则表达式非常棒,即使它们的简洁性可能使它们很难被人类解析。
QuantumOmega
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.