2010-10-06 34 views
14

Làm cách nào để xóa khoảng trắng trong chuỗi nhưng không phải ký tự dòng mới trong JavaScript. Tôi đã tìm thấy một giải pháp cho C#, bằng cách sử dụng \t , nhưng nó không được hỗ trợ trong JavaScript.Có biểu thức chính quy JavaScript nào để xóa tất cả khoảng trắng ngoại trừ dòng mới không?

Để làm cho nó rõ ràng hơn, sau đây là một ví dụ:

var s = "this\n is a\n te st" 

sử dụng phương pháp regexp Tôi hy vọng nó sẽ trở

"this\nisa\ntest" 
+0

Bạn có thể cho chúng tôi thấy giải pháp C# của bạn không? Các cụm từ thông dụng C# phổ biến nhất sẽ hoạt động tốt trong JavaScript (bao gồm '\ t'). –

Trả lời

7

Thi s sẽ hoạt động, ngay cả trên \t.

var newstr = s.replace(/ +?/g, ''); 
+4

không cần thiết cho + hoặc?, Chỉ cần s.replace (//g, '') là đủ. Cá nhân tôi không thích thực tế là// g khớp các tab như thế này với tôi đọc là "khớp với ký tự khoảng trắng"./[\ t \ r]/g sẽ đối sánh dấu cách, tab và ký tự trả về và dễ đọc hơn trong mục đích của nó. – tKe

+0

Điều đó không nên hoạt động trên các tab. –

+0

@Matthew, Đã kiểm tra. Nó là. – Ruel

2

Hãy thử điều này

var trimmedString = orgString.replace(/^\s+|\s+$/g, '') ; 
+0

bạn có thể làm điều đó mà không có biểu thức chính quy, orgString.split ('') .join (''); –

+2

'split ('')' chỉ xóa dấu cách, không phải các tab hoặc khoảng trắng khác. –

+0

chia và tham gia phục vụ mục đích của tôi, nhưng mục đầu tiên dường như không hoạt động !! ví dụ. var s = "this \ n là một st te" bằng cách sử dụng phương pháp regexp tôi mong đợi nó trở lại "điều này \ nisatest" Không phải là nó giả sử để làm việc theo cách đó !! – sat

0

thử này '/^\\s*/'

9

Mặc dù trong Javascript / /g làm trận đấu \t, tôi thấy nó có thể ẩn ý định ban đầu vì nó đọc như một trận đấu cho nhân vật không gian. Cách khác là sử dụng bộ sưu tập ký tự để liệt kê rõ ràng các ký tự khoảng trắng, ngoại trừ \n. tức là /[ \t\r]+/g.

var newString = s.replace(/[ \t\r]+/g,""); 
2

Nếu bạn muốn kết hợp tất cả các ký tự khoảng trắng mà \s trận đấu ngoại trừ dòng mới, bạn có thể sử dụng này:

/[\t\v\f\r \u00a0\u2000-\u200b\u2028-\u2029\u3000]+/g 

Lưu ý rằng điều này sẽ loại bỏ kí tự xuống dòng (\r), vì vậy nếu đầu vào có chứa \r\n cặp, chúng sẽ được chuyển đổi thành chỉ \n. Nếu bạn muốn giữ lại lợi nhuận vận chuyển, chỉ cần xóa \r khỏi cụm từ thông dụng.

0

này hiện các trick:

str.replace(/ /g, "") 

và không gian không phù hợp với các tab hoặc xuống hàng (CHROME45), không cộng hoặc questionmark là cần thiết khi thay thế toàn cầu.

Trong Perl, bạn có ký hiệu "khoảng trắng ngang" để viết tắt giữa các dấu ngắt dòng và dấu cách nhưng tiếc là không có trong JavaScript.

Thuật ngữ viết tắt được hỗ trợ bằng JavaScript, nhưng nó chỉ mô tả trình lập bảng.

0
[^\S\r\n]+ 

Không phải là một phi -whitespace char, không \r và không \n; một hoặc nhiều phiên bản.

Các vấn đề liên quan