Làm cách nào để xóa khoảng trắng khi lấy văn bản bằng jQuery?


183

Tôi muốn sử dụng jQuery để bọc một mailto: neo xung quanh một địa chỉ email, nhưng nó cũng lấy được bảng trắng mà CMS đang tạo.

Đây là HTML tôi phải làm việc với, tập lệnh như tôi có và một bản sao của đầu ra.

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

Đã tạo 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>

Mặc dù tôi nghi ngờ rằng những người khác đang đọc câu hỏi này có thể muốn loại bỏ khoảng trắng hàng đầu và đuôi, tôi khá vui khi mất tất cả khoảng trắng khi coi đó là địa chỉ email tôi đang gói.


Có thể trùng lặp: stackoverflow.com/questions/10800355/
Kẻ

Câu trả lời:


333

Sử dụng replacehàm trong js:

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

Điều đó sẽ loại bỏ tất cả các không gian

Nếu bạn muốn loại bỏ các hàng đầu và dấu khoảng trắng chỉ , sử dụng phương pháp jQuery $ .trim:

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

11
Đúng nhưng / \ s / g sẽ là một mẫu rõ ràng hơn ("i" là dư thừa và '' là một dạng bất thường - cũng là một mẫu của / (^ \ s *) | (\ s * $) / g là tương đương với trang trí.
annakata

1
Bạn là annakata chính xác, tôi đã xóa / i vì nó là dư thừa vì trường hợp nhạy cảm trong trường hợp này không phải là vấn đề
Andreas Grech

6
Một điều cần cảnh giác là IE không coi các không gian không phá vỡ (& nbsp;, & # 160;, & # xA0;, \ xA0, \ u00A0, v.v ...) là khoảng trắng, vì vậy / [ \ s \ xA0] + / g có thể đáng tin cậy hơn để thay thế tất cả khoảng trắng.
ngày

100

Javascript đã được tích hợp sẵn:

str.trim()

Nó không hoạt động trong IE8. Nếu bạn phải hỗ trợ các trình duyệt cũ hơn, hãy sử dụng câu trả lời của Tuxmentat hoặc Paul .


69

Trên thực tế, jQuery có một hàm trim tích hợp:

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

Xem ở đây để biết chi tiết.


3
bởi vì mọi tính năng được tích hợp phải có trình bao bọc jQuery
jasonszhao

24

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


1
Điều này loại bỏ khoảng trắng hàng đầu và dấu như hàm trim PHP.
Paul

1
bạn có thể giải thích cho mình?
Francisco Corrales Morales

1
@FranciscoCorralesMorales: Tôi nghĩ bạn có một lựa chọn ở đây: Tìm hiểu về các biểu thức thông thường hoặc không. Nếu bạn làm như vậy, biểu thức sẽ trở nên rõ ràng và nếu bạn không khó giải thích nên rất dễ hiểu. Vì vậy: Tìm hiểu về các biểu thức thông thường. Nếu bạn vẫn không hiểu sau khi cố gắng tìm hiểu chúng, hãy hỏi một câu hỏi cụ thể về chính xác những gì bạn không hiểu.
Peter V. Mørch

5
Làm thế nào bất cứ thứ gì trông như thế này / ^ \ s + | \ s + $ / g có thể được gọi là "thông thường"?
RyanNerd

Chúng được gọi là biểu thức chính quy vì chúng có thể mô tả các ngôn ngữ thông thường, ngôn ngữ có thể được phân tích cú pháp bằng máy trạng thái hữu hạn. Các biểu thức chính quy, ở dạng tinh khiết nhất của chúng, trên thực tế là một cách để mô tả một máy trạng thái hữu hạn. Xem xét mức độ khó khăn như thế nào khi đưa sơ đồ tự động vào mã của bạn theo cách mà máy tính có thể hiểu được, các biểu thức thông thường khá tuyệt vời ngay cả khi sự căng thẳng của chúng có thể khiến chúng khó phân tích đối với con người.
QuantumOmega
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.