bagaimana cara menghapus spasi ketika mengambil teks dengan jQuery?

183

Saya ingin menggunakan jQuery untuk membungkus mailto: berlabuh di sekitar alamat email, tetapi juga meraih whitepace yang dihasilkan oleh CMS.

Inilah HTML yang harus saya kerjakan, skrip seperti yang saya miliki dan salinan output.

HTML

<div class="field field-type-text field-field-email">
  <div class="field-item">
    [email protected]    </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 yang dihasilkan

<div class="field field-type-text field-field-email">
  <div class="field-items"><a href="mailto:%0A%20%20%20%[email protected]%20%20%20%20">
    [email protected]    </a></div>
</div>

Meskipun saya curiga bahwa orang lain yang membaca pertanyaan ini mungkin hanya ingin menghapus spasi utama dan tailing, saya cukup senang kehilangan semua spasi putih karena itu adalah alamat email yang saya bungkus.

Steve Perks
sumber
Kemungkinan rangkap: stackoverflow.com/questions/10800355/…
The Unknown Dev

Jawaban:

333

Gunakan replacefungsi dalam js:

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

Itu akan menghapus semua spasi

Jika Anda ingin menghapus spasi terkemuka dan trailing hanya , menggunakan metode jQuery $ .trim:

var emailAdd = $.trim($(this).text());
Andreas Grech
sumber
11
Benar tetapi / \ s / g akan menjadi pola yang lebih jelas ("i" berlebihan dan '' adalah bentuk yang tidak biasa - juga menunjukkan pola / (^ \ s *) | (\ s * $) / g adalah setara dengan trim
annakata
1
Anda annakata yang benar, saya menghapus / i karena itu berlebihan karena sensitivitas kasus dalam kasus ini bukan masalah
Andreas Grech
6
Satu hal yang perlu diwaspadai adalah bahwa IE tidak menganggap spasi yang tidak melanggar (& nbsp ;, & # 160 ;, & # xA0 ;, \ xA0, \ u00A0, dll ...) sebagai ruang putih, jadi / [ \ s \ xA0] + / g mungkin lebih dapat diandalkan untuk mengganti semua ruang putih.
travis
100

Javascript telah dibangun dalam trim:

str.trim()

Tidak berfungsi di IE8. Jika Anda harus mendukung browser yang lebih lama, gunakan jawaban Tuxmentat atau Paul .

Jhankar Mahbub
sumber
69

Sebenarnya, jQuery memiliki fungsi trim bawaan:

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

Lihat di sini untuk detailnya.

Tuxmentat
sumber
3
karena setiap fitur
bawaan
24

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

Paul
sumber
1
Ini menghilangkan spasi putih awal dan akhir seperti fungsi trim PHP.
Paul
1
bisakah kamu menjelaskan dirimu sendiri?
Francisco Corrales Morales
1
@FranciscoCorralesMorales: Saya pikir Anda punya pilihan di sini: Pelajari tentang ekspresi reguler atau tidak. Jika Anda melakukannya, ungkapan itu akan menjadi jelas, dan jika tidak, akan sulit untuk dijelaskan sehingga mudah dimengerti. Jadi: Pelajari tentang ekspresi reguler. Jika Anda masih tidak mengerti setelah mencoba mempelajarinya, ajukan pertanyaan spesifik tentang apa yang tidak Anda mengerti.
Peter V. Mørch
5
Bagaimana bisa sesuatu yang seperti ini / ^ \ s + | \ s + $ / g disebut "biasa"?
RyanNerd
Mereka disebut ekspresi reguler karena mereka dapat menggambarkan bahasa biasa, bahasa yang dapat diuraikan menggunakan mesin negara-terbatas. Ekspresi reguler, dalam bentuk paling murni, sebenarnya adalah cara untuk menggambarkan mesin negara-terbatas. Mempertimbangkan betapa sulitnya memasukkan diagram automaton ke dalam kode Anda dengan cara yang dapat dimengerti oleh komputer, ekspresi reguler cukup mengagumkan, bahkan jika kekasarannya dapat membuat mereka sulit untuk diurai untuk manusia.
QuantumOmega