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">
    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 yang dihasilkan

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

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.


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());

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


69

Sebenarnya, jQuery memiliki fungsi trim bawaan:

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

Lihat di sini untuk detailnya.


3
karena setiap fitur
bawaan

24

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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.