como retiro o espaço em branco ao capturar texto com o jQuery?


183

Eu estou querendo usar o jQuery para envolver um mailto: anchor em torno de um endereço de email, mas também está pegando o espaço em branco que o CMS está gerando.

Aqui está o HTML com o qual tenho que trabalhar, o script como o tenho e uma cópia da saída.

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 gerado

<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>

Embora eu suspeite que outras pessoas que estão lendo esta pergunta possam querer apenas remover o espaço em branco inicial e final, fico feliz em perder todo o espaço em branco, considerando que é um endereço de e-mail que estou inserindo.


Respostas:


333

Use a replacefunção em js:

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

Isso removerá todos os espaços

Se você deseja remover apenas os espaços em branco à esquerda e à direita , use o método jQuery $ .trim:

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

11
Correto, mas / \ s / g seria um padrão mais claro (o "i" é redundante e o '' é uma forma incomum - e também um padrão de / (^ \ s *) | (\ s * $) / g é equivalente a trim.
annakata

1
Você está annakata correta, eu removi o / i porque é redundante, pois a sensibilidade caso, neste caso, não é um problema
Andreas Grech

6
Uma coisa a ser cautelosa é que o IE não considera espaços sem quebra (& nbsp ;, & # 160 ;, & # xA0 ;, \ xA0, \ u00A0, etc ...) como espaço em branco, então / [ \ s \ xA0] + / g pode ser mais confiável para substituir todo o espaço em branco.
travis


69

Na verdade, o jQuery possui uma função de corte integrada:

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

Veja aqui para detalhes.


3
porque toda construída no recurso deve ter um invólucro jQuery
jasonszhao

24

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


1
Isso remove os espaços em branco iniciais e finais, como a função de ajuste do PHP.
Paul

1
você pode se explicar?
Francisco Corrales Morales

1
@FranciscoCorralesMorales: Acho que você tem uma escolha aqui: aprenda sobre expressões regulares ou não. Se o fizer, a expressão se tornará auto-evidente e, se não o fizer, será difícil de explicar, por isso é fácil de entender. Então: Aprenda sobre expressões regulares. Se você ainda não entender depois de tentar aprendê-los, faça uma pergunta específica sobre exatamente o que você não entende.
Peter V. Mørch

5
Como algo que se parece com isso / ^ \ s + | \ s + $ / g pode ser chamado de "regular"?
precisa saber é o seguinte

Eles são chamados de expressões regulares porque podem descrever linguagens regulares, linguagens que podem ser analisadas usando uma máquina de estado finito. Expressões regulares, em sua forma mais pura, são de fato uma maneira de descrever uma máquina de estados finitos. Considerando o quão difícil seria incluir um diagrama de um autômato no seu código de uma maneira que o computador pudesse entender, as expressões regulares são bastante impressionantes, mesmo que sua concisão possa torná-las bastante difíceis de analisar para humanos.
QuantumOmega
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.