Xóa khoảng trắng bên trong một chuỗi trong javascript


101

Tôi đã đọc câu hỏi này về javascript trim, với câu trả lời là regex.

Sau đó, tôi hy vọng cắt để loại bỏ không gian bên trong giữa Hello và World.

function myFunction() {
    alert("Hello World ".trim());
}

ĐÃ CHỈNH SỬA

Tại sao tôi lại mong đợi điều đó !?

Vô lý! Rõ ràng là trim không loại bỏ các khoảng trống bên trong !, chỉ những khoảng trống ở đầu và cuối, đó là cách thức hoạt động của trim, vậy đây là một câu hỏi rất sai, tôi xin lỗi.


10
trim loại bỏ khoảng trắng từ đầu và cuối của một chuỗi
Manse

3
Trim loại bỏ khoảng trắng trướcsau một chuỗi. Hello Worldđã được "cắt".
Rocket Hazmat

@limelights Để hiển thị "HelloWorld" thay vì "Hello World"
Hernán Eche

4
@void: Đó không phải là "cắt tỉa", đó là một vấn đề khác.
Rocket Hazmat

Câu trả lời:


236

Để sử dụng loại bỏ ký tự khoảng trắng

"hello world".replace(/\s/g, "");

Đối với tất cả không gian trắng, hãy sử dụng gợi ý của Rocket trong phần bình luận bên dưới!


137
Bạn có thể muốn sử dụng .replace(/ /g, '')nếu có nhiều hơn một không gian.
Rocket Hazmat

@Rocket, điều đó hoàn toàn đúng, vẫn chưa có câu trả lời được cập nhật! Cảm ơn! :)
Henrik Andersson

47
@Juhana: Nếu bạn muốn loại bỏ khoảng trắng khác quá rồi thực hiện: .replace(/\s/g, '').
Rocket Hazmat

12
@RocketHazmat vâng! câu trả lời đúng! mặc dù điều này có thể là một chút hiệu quả hơn: str.replace (/ \ s + / g, '')
jackocnr

3
@PitchiahNatarajan \ssẽ khớp với khoảng trắng, tab và dòng mới.
Rocket Hazmat


1

Bạn có thể sử dụng phương pháp thay thế chuỗi bằng một biểu thức chính quy.

"Hello World ".replace(/ /g, "");

Phương thức Replace () trả về một chuỗi mới với một số hoặc tất cả các kết quả phù hợp của một mẫu được thay thế bằng một chuỗi thay thế. Mẫu có thể là một chuỗi hoặc một RegExp

RegExp

  • / / - Khoảng trắng đối sánh biểu thức chính quy

  • g - Cờ toàn cầu; tìm tất cả các trận đấu thay vì dừng lại sau trận đấu đầu tiên


1

Bạn có thể dùng

"Hello World ".replace(/\s+/g, '');

trim()chỉ xóa khoảng trắng ở cuối chuỗi (đầu tiên và cuối cùng trên chuỗi). Trong trường hợp này, regExp này nhanh hơn vì bạn có thể xóa một hoặc nhiều khoảng trắng cùng một lúc.

Nếu bạn thay đổi chuỗi trống thay thế thành '$', sự khác biệt trở nên rõ ràng hơn nhiều:

var string= '  Q  W E   R TY ';
console.log(string.replace(/\s/g, '$'));  // $$Q$$W$E$$$R$TY$
console.log(string.replace(/\s+/g, '#')); // $Q$W$E$R$TY$

So sánh hiệu suất - /\s+/gnhanh hơn. Xem tại đây: http://jsperf.com/s-vs-s


Các câu trả lời hiện đang chấp nhận làm điều tương tự. Vui lòng trình bày một số thử nghiệm có liên quan cho thấy câu trả lời này nhanh hơn câu trả lời đó nhiều hơn nano giây.
Heretic Monkey

Đã cập nhật @HereticMonkey!
ArlanG
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.