Helpex - Trao đổi & giúp đỡ Đăng nhập
442

Làm thế nào để loại bỏ khoảng trắng trong một chuỗi? Ví dụ:

Đầu vào: '/var/www/site/Brand new document.docx'
Đầu ra:'/var/www/site/Brandnewdocument.docx'

Cảm ơn

442 hữu ích 0 bình luận 616k xem chia sẻ
955

Điều này?

str = str.replace(/\s/g, '');

Thí dụ

var str = '/var/www/site/Brand new document.docx';

document.write( str.replace(/\s/g, '') );


Cập nhật: Dựa trên câu hỏi này, đây:

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

là một giải pháp tốt hơn. Nó tạo ra kết quả tương tự, nhưng nó làm nó nhanh hơn.

Chính quy

\slà biểu thức chính cho "khoảng trắng" và glà cờ "toàn cầu", nghĩa là khớp với TẤT CẢ \s(khoảng trắng).

Một lời giải thích tuyệt vời cho +có thể được tìm thấy ở đây .

Là một lưu ý phụ, bạn có thể thay thế nội dung giữa các trích dẫn đơn lẻ thành bất cứ điều gì bạn muốn, vì vậy bạn có thể thay thế khoảng trắng bằng bất kỳ chuỗi nào khác.

955 hữu ích 5 bình luận chia sẻ
52

var a = b = " /var/www/site/Brand new   document.docx ";

console.log( a.split(' ').join('') );
console.log( b.replace( /\s/g, '') ); 

Hai cách để làm điều này!

52 hữu ích 1 bình luận chia sẻ
17

Theo câu trả lời @rsplak: thực sự, sử dụng cách chia / nối nhanh hơn so với sử dụng regrec. Xem trường hợp kiểm tra hiệu suất

Vì thế

var result = text.split(' ').join('')

hoạt động nhanh hơn

var result = text.replace(/\s+/g, '')

Trên các văn bản nhỏ, điều này không liên quan, nhưng đối với các trường hợp khi thời gian là quan trọng, ví dụ như trong các trình phân tích văn bản, đặc biệt là khi tương tác với người dùng, điều đó rất quan trọng.


Mặt khác, \s+xử lý nhiều nhân vật không gian hơn. Trong số với \n\t, nó cũng phù hợp với \u00a0nhân vật, và đó là những gì  được lại, khi nhận được văn bản sử dụng textDomNode.nodeValue.

Vì vậy, tôi nghĩ rằng kết luận ở đây có thể được đưa ra như sau: nếu bạn chỉ cần thay thế khoảng trắng ' ' , hãy sử dụng split / tham gia. Nếu có thể có các biểu tượng khác nhau của lớp biểu tượng - sử dụngreplace(/\s+/g, '')

17 hữu ích 1 bình luận chia sẻ
7
var input = '/var/www/site/Brand new document.docx';

//remove space
input = input.replace(/\s/g, '');

//make string lower
input = input.toLowerCase();

alert(input);

Bấm vào đây để làm việc

7 hữu ích 0 bình luận chia sẻ
5

NGẮN HẠN và NHANH NHẤT :str.replace(/ /g, '');


Điểm chuẩn:

Đây là kết quả của tôi - (2018.07.13) MacOs High Sierra 10.13.3 trên Chrome 67.0.3394 (64-bit), Safari 11.0.3 (13604.5.6), Firefox 59.0.2 (64-bit)):

Chuỗi NGẮN

Chuỗi ngắn tương tự như ví dụ từ câu hỏi OP

Giải pháp nhanh nhất trên tất cả các trình duyệt là / /g(regrec1a) - Chrome 17.7M (hoạt động / giây), Safari 10.1M, Firefox 8.8M. Chậm nhất cho tất cả các trình duyệt là split-joingiải pháp. Thay đổi để \shoặc thêm +hoặc iđể regexp chậm xử lý.

Chuỗi dài

Đối với chuỗi khoảng ~ 3 triệu kết quả ký tự là:

  • regapi1a : Safari 50,14 ops / giây, Firefox 18,57, Chrome 8,95
  • regrec2b : Safari 38,39, Firefox 19,45, Chrome 9,26
  • chia nhỏ : Firefox 26.41, Safari 23.10, Chrome 7,98,

Bạn có thể chạy nó trên máy của mình: https://jsperf.com/remove-opes-spaces/1

5 hữu ích 0 bình luận chia sẻ
2
  var output = '/var/www/site/Brand new document.docx'.replace(/ /g, ""); 
    or
  var output = '/var/www/site/Brand new document.docx'.replace(/ /gi,"");

Lưu ý: Mặc dù bạn sử dụng 'g' hoặc 'gi' để xóa các khoảng trắng, cả hai đều hoạt động giống nhau.

Nếu chúng ta sử dụng 'g' trong chức năng thay thế, nó sẽ kiểm tra sự trùng khớp chính xác. nhưng nếu chúng ta sử dụng 'gi', nó sẽ bỏ qua độ nhạy của vỏ.

để tham khảo bấm vào đây .

2 hữu ích 0 bình luận chia sẻ
2

Mặc dù có nhiều cách để sử dụng regex để xóa khoảng trắng, nhưng có một hàm đơn giản có thể xóa tất cả khoảng trắng được gọi là .trim();:

var str = "abr a cadab ra";
str = str.trim();
//str = "abracadabra"
2 hữu ích 1 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ javascript jquery text , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading