Xóa TẤT CẢ khoảng trắng khỏi văn bản


589
$("#topNav" + $("#breadCrumb2nd").text().replace(" ", "")).addClass("current");

Đây là một đoạn trích từ mã của tôi. Tôi muốn thêm một lớp vào ID sau khi nhận được thuộc tính văn bản của ID khác. Vấn đề với điều này, là ID giữ văn bản tôi cần, chứa khoảng cách giữa các chữ cái.

Tôi muốn các khoảng trắng được loại bỏ. Tôi đã thử TRIM()REPLACE()điều này chỉ hoạt động một phần. Việc REPLACE()duy nhất loại bỏ không gian 1.

Câu trả lời:


1349

Bạn phải nói thay thế () để lặp lại biểu thức chính quy:

.replace(/ /g,'')

Ký tự g có nghĩa là lặp lại tìm kiếm thông qua toàn bộ chuỗi. Đọc về điều này và các công cụ sửa đổi RegEx khác có sẵn trong JavaScript tại đây .

Nếu bạn muốn khớp tất cả các khoảng trắng và không chỉ là ký tự khoảng trắng, hãy sử dụng \sthay thế:

.replace(/\s/g,'')

30
Coffeescript sẽ phàn nàn về regex đó vì lý do khủng khiếp nào đó. Thay vào đó tôi đã phải đi trước và sử dụng .replace(/\s+/g, '')nó là hoàn toàn tốt với tôi.
Dan Bradbury

7
Nếu bạn muốn triển khai một cái gì đó như phương thức string.strip của ruby, trả về một bản sao của chuỗi với khoảng trắng ở đầu và cuối được loại bỏ, điều này sẽ hoạt động: x = " Many spaces before and after " y = x.replace(/(^\s+|\s+$)/g, "")^\snghĩa là khoảng trắng sau đầu chuỗi, \s$có nghĩa là khoảng trắng ở cuối chuỗi chuỗi, |là cho một trong hai hoặc trong nhóm và công cụ gsửa đổi được giải thích trong các ý kiến ​​trên. Bạn cũng cần +định lượng sau mỗi lần \sbạn muốn chụp một hoặc nhiều trường hợp khoảng trắng.
Garrett Simpson

299
.replace(/\s+/, "") 

Sẽ chỉ thay thế khoảng trắng đầu tiên , bao gồm khoảng trắng, tab và dòng mới.

Để thay thế tất cả các khoảng trắng trong chuỗi, bạn cần sử dụng chế độ chung

.replace(/\s/g, "")

11
Cái đầu tiên không xóa tất cả các khoảng trắng (nó chỉ xóa nhóm không gian / dòng / tab mới đầu tiên), thứ 2 là OK. bản demo: regex101.com/r/wX8rF2/3

4
.replace (/ \ s + / g, '')
mynameistechno

@mynameistechno +Không thêm bất cứ thứ gì vì chúng tôi đã sử dụng công cụ gsửa đổi (toàn cầu)
d4nyll

dòng đầu tiên không hoạt động vì nó không xóa các dấu cách khỏi văn bản
UKDataGeek

@ d4nyll Nó có thể làm cho nó hiệu quả hơn.
Solomon Ucko

5

Sử dụng String.prototype.replacevới regex, như đã đề cập trong các câu trả lời khác, chắc chắn là giải pháp tốt nhất.

Nhưng, chỉ để giải trí, bạn cũng có thể xóa tất cả các khoảng trắng khỏi văn bản bằng cách sử dụng String.prototype.splitString.prototype.join:

const text = ' a b    c d e   f g   ';
const newText = text.split(/\s/).join('');

console.log(newText); // prints abcdefg

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.