jak usunąć białe znaki podczas pobierania tekstu za pomocą jQuery?


183

Chcę użyć jQuery do zawinięcia mailto: zakotwiczenia wokół adresu e-mail, ale również chwyta białą przestrzeń generowaną przez CMS.

Oto HTML, z którym muszę pracować, skrypt, jaki mam, i kopia wyniku.

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>');
   });
 });

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

Chociaż podejrzewam, że inni czytający to pytanie mogą chcieć po prostu usunąć początkowe i końcowe białe znaki, cieszę się, że straciłem wszystkie białe znaki, ponieważ to adres e-mail, który zawijam.


Odpowiedzi:


333

Użyj replacefunkcji w js:

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

Spowoduje to usunięcie wszystkich spacji

Jeśli chcesz usunąć tylko początkowe i końcowe białe znaki , użyj metody jQuery $ .trim:

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

11
Prawidłowe, ale / \ s / g byłoby bardziej przejrzystym wzorem („i” jest zbędne, a „” jest nietypową formą - również fwiw wzór / (^ \ s *) | (\ s * $) / g jest odpowiednik wykończenia
annakata,

1
Masz rację annakata, usunąłem / i, ponieważ jest redundantny, ponieważ rozróżnianie wielkości liter w tym przypadku nie jest problemem
Andreas Grech

6
Jedną rzeczą, na którą należy uważać, jest to, że IE nie uważa, że ​​spacje nierozdzielające (& nbsp ;, & # 160 ;, & # xA0 ;, \ xA0, \ u00A0 itp.) ... jako spacje, więc / [ \ s \ xA0] + / g może być bardziej niezawodny do zastąpienia wszystkich białych znaków.
travis


69

W rzeczywistości jQuery ma wbudowaną funkcję przycinania:

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

Zobacz tutaj, aby uzyskać szczegółowe informacje.


3
ponieważ każda wbudowana funkcja musi mieć opakowanie jQuery
jasonszhao

24

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


1
To usuwa wiodące i końcowe białe znaki, takie jak funkcja przycinania PHP.
Paul

1
potrafisz się wyjaśnić?
Francisco Corrales Morales

1
@FranciscoCorralesMorales: Myślę, że masz tutaj wybór: dowiedz się o wyrażeniach regularnych lub nie. Jeśli to zrobisz, wyrażenie stanie się oczywiste, a jeśli tego nie zrobisz, trudno będzie to wytłumaczyć, aby łatwo było je zrozumieć. Więc: Dowiedz się o wyrażeniach regularnych. Jeśli nadal nie rozumiesz po próbie ich nauczenia, zadaj konkretne pytanie dotyczące dokładnie tego, czego nie rozumiesz.
Peter V. Mørch

5
Jak cokolwiek, co wygląda tak / ^ \ s + | \ s + $ / g, można nazwać „zwykłym”?
RyanNerd

Nazywa się je wyrażeniami regularnymi, ponieważ mogą opisywać języki regularne, które można analizować za pomocą maszyny o stanie skończonym. Wyrażenia regularne, w najczystszej postaci, są w rzeczywistości sposobem na opisanie maszyny o skończonym stanie. Biorąc pod uwagę, jak trudno byłoby dołączyć schemat automatu do kodu w sposób zrozumiały dla komputera, wyrażenia regularne są dość niesamowite, nawet jeśli ich zwięzłość może sprawić, że będą one trudne do przeanalizowania dla ludzi.
QuantumOmega
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.