2012-04-05 57 views
114

Tôi có chuỗi html sau. Mã mẫu trong JavaScript là gì để xóa các khoảng trắng đầu và cuối của chuỗi này?Làm cách nào để xóa các khoảng trắng đầu và cuối của một chuỗi html đã cho?

<p>&nbsp;&nbsp;</p> 
<div>&nbsp;</div> 
Trimming using JavaScript<br /> 
<br /> 
<br /> 
<br /> 
all leading and trailing white spaces 
<p>&nbsp;&nbsp;</p> 
<div>&nbsp;</div> 
+0

[kiểm tra này] (http://stackoverflow.com/questions/498970/how-do-i-trim-a-string-in-javascript) – musefan

+0

vấn đề thực sự của bạn là gì? Bạn có muốn xóa khoảng trắng trước khi chèn các nút trong tài liệu không? –

+0

Tôi muốn xóa tất cả các khoảng trắng hàng đầu cũng như tất cả các khoảng trắng phía sau. Rất giống với phương pháp Trim trong C# ngoại trừ việc nó loại bỏ cả khoảng trắng. – Sunil

Trả lời

6
string.replace(/^\s+|\s+$/g, ""); 
+0

Đọc câu hỏi, ' ' được sử dụng thay cho khoảng trống thông thường. Ngày đầu này, khoảng trắng được chứa trong một thẻ. –

+1

Nó không làm những gì tôi cần. – Sunil

176

Xem String phương pháp trim() - https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/Trim

var myString = ' bunch of <br> string data with<p>trailing</p> and leading space '; 
myString = myString.trim(); 
// or myString = String.trim(myString); 

Sửa

Như đã nêu trong ý kiến ​​khác, nó có thể sử dụng phương pháp regex. Phương pháp trim là một cách hiệu quả chỉ là một bí danh cho một regex:

if(!String.prototype.trim) { 
    String.prototype.trim = function() { 
    return this.replace(/^\s+|\s+$/g,''); 
    }; 
} 

... điều này sẽ tiêm phương pháp này vào nguyên mẫu bản địa cho những trình duyệt người vẫn còn đang bơi vào cuối cạn của hồ bơi.

+2

Tôi muốn có một cách regex, bởi vì nó không được hỗ trợ trong tất cả các trình duyệt (* ho ho * IE <9). – PeeHaa

+1

Phương pháp cắt sẽ không cắt các khoảng trắng, nhưng chỉ có khoảng trắng. Vì vậy, nó không phải những gì tôi đang tìm kiếm. – Sunil

+6

Tôi không chắc chắn những gì bạn nghĩ rằng "không gian trắng" được, nhưng trim sẽ loại bỏ khoảng trắng nói chung (dòng mới, không gian, tab, vv), không chỉ là ký tự khoảng trắng. – bsa

0
var trim = your_string.replace(/^\s+|\s+$/g, ''); 
+1

Google sẽ xóa các khoảng trắng như
hoặc

   

 
? Trmming không gian đơn giản không phải là một vấn đề. Loại bỏ không gian màu trắng của tôi mà tôi đang theo đuổi. – Sunil

+0

sẽ xóa không gian trắng – user2086641

45
var str = " my awesome string " 
str.trim();  

cho các trình duyệt cũ, sử dụng regex

str = str.replace(/^[ ]+|[ ]+$/g,'') 
//str = "my awesome string" 
+2

"[]" giống hệt "". Một nhóm nhân vật chính xác của một nhân vật là ... ừm ... chính xác một ký tự. – Flimzy

+1

@Flimzy: Vâng, nó sẽ có ý nghĩa hơn để viết '[\ t \ n \]' hoặc chỉ '\ s' thay vì' [] 'mà không có ý nghĩa. – erik

3

Nếu bạn đang làm việc với một chuỗi multiline, giống như một tập tin mã:

<html> 
    <title>test</title> 
    <body> 
     <h1>test</h1> 
    </body> 
</html> 

Và muốn thay thế tất cả các dòng dẫn đầu, để nhận kết quả này:

<html> 
<title>test</title> 
<body> 
<h1>test</h1> 
</body> 
</html> 

Bạn phải thêm multiline cờ để regex của bạn, ^$ trận đấu từng dòng:

string.replace(/^\s+|\s+$/gm, ''); 

liên quan quote from docs:

Các "m" cờ chỉ ra rằng một chuỗi đầu vào multiline nên được coi là nhiều dòng. Ví dụ: nếu "m" được sử dụng, "^" và "$" thay đổi từ kết hợp tại chỉ bắt đầu hoặc kết thúc của toàn bộ chuỗi thành đầu hoặc cuối của bất kỳ dòng nào trong chuỗi.

0

Tôi biết đây là câu hỏi rất cũ nhưng vẫn không có câu trả lời được chấp nhận. Tôi thấy rằng bạn muốn xóa các thẻ sau: các thẻ html "rỗng" và khoảng trắng dựa trên chuỗi html.

tôi đã đưa ra một giải pháp dựa trên nhận xét của bạn cho sản lượng bạn đang tìm kiếm:

Trimming using JavaScript<br /><br /><br /><br />all leading and trailing white spaces 

var str = "<p>&nbsp;&nbsp;</p><div>&nbsp;</div>Trimming using JavaScript<br /><br /><br /><br />all leading and trailing white spaces<p>&nbsp;&nbsp;</p><div>&nbsp;</div>"; 
 
console.log(str.trim().replace(/&nbsp;/g, '').replace(/<[^\/>][^>]*><\/[^>]+>/g, ""));

.trim() loại bỏ hàng đầu và dấu khoảng trắng

.replace(/&nbsp;/g, '') xóa &nbsp;

.replace(/<[^\/>][^>]*><\/[^>]+>/g, "")); loại bỏ thẻ trống

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