Câu trả lời:
Đ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
\s
là biểu thức chính cho "khoảng trắng" và g
là 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.
.replace(/\s+/g, '')
thường xuyên hơn. Có sự khác biệt giữa điều đó và câu trả lời của tôi?
.replace(' ','')
sẽ làm việc. Nhiều đánh giá cao!
+
chỉ có 60 phiếu nếu ai đó muốn ghi nhận anh ta / cô ta quá stackoverflow.com/a/5964427/4258817
.replace('/\s+/g', '')
vì nó sẽ cố gắng tìm chuỗi ký tự đó. Điều này làm tôi vấp ngã trước khi ...
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!
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 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-join
giải pháp. Thay đổi để
\s
hoặc thêm +
hoặc i
để RegExp làm chậm xuống xử lý.
Đối với chuỗi khoảng ~ 3 triệu kết quả ký tự là:
Bạn có thể chạy nó trên máy của mình: https://jsperf.com/remove-opes-spaces/1
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
và \t
, nó cũng phù hợp với \u00a0
nhâ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 chia / nối. 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, '')
way faster
. đã chạy thử nghiệm và nó chỉ nhanh hơn 2,19%, trên Firefox 61 của tôi
var input = '/var/www/site/Brand new document.docx';
//remove space
input = input.replace(/\s/g, '');
//make string lower
input = input.toLowerCase();
alert(input);
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 .
Regex + Thay thế ()
Mặc dù regex có thể chậm hơn, nhưng trong nhiều trường hợp sử dụng, nhà phát triển chỉ thao tác một vài chuỗi cùng một lúc nên việc xem xét tốc độ là không liên quan. Mặc dù / / nhanh hơn / \ s /, việc '\ s' giải thích những gì đang xảy ra với nhà phát triển khác có lẽ rõ ràng hơn.
let string = '/var/www/site/Brand new document.docx';
let path = string.replace(/\s/g, '');
// path => '/var/www/site/Brandnewdocument.docx'
Tách () + Tham gia ()
Sử dụng Split + Join cho phép thao tác chuỗi tiếp theo.
let string = '/var/www/site/Brand new document.docx';
let path => string.split('').map(char => /(\s|\.)/.test(char) ? '/' : char).join('');
// "/var/www/site/Brand/new/document/docx";
" ahm ed ".split('').filter(e => e.trim().length).join('')