2009-12-24 23 views
5

Tôi muốn thay thế các dòng trống trong chuỗi của mình bằng số lặpSử dụng Javascript RegExp để thay thế từng kết quả bằng một số lặp

ví dụ: thay

String:

"My first line 

My second line 

My third line" 

với

" 
1 

My first line 

2 

My second line 

3 

My third line" 

tôi có thể phù hợp và thay thế những dòng này sử dụng

var newstring = TestVar.replace (/(^|\n\n)/g, "\nhello\n"); 

Tuy nhiên tôi đang đấu tranh để thêm một chức năng mà sẽ thêm một số lặp cho mỗi số.

Bạn có thể trợ giúp không?

TIA,

gids

+0

Hãy thụt khối mã của bạn với bốn không gian vào lúc bắt đầu của mỗi hàng. – Gumbo

+0

Cảm ơn người đứng đầu, sẽ đảm bảo tôi làm điều này trong tương lai – Gids

Trả lời

8

Vâng, bạn có thể làm điều đó trong javascript. Bạn chỉ cần chuyển một hàm làm đối số thứ hai cho replace.

var i = 0; 
var newstring = TestVar.replace(/(^|\n\n)/g, function() { return '\n' + (++i) + '\n'; }); 

chức năng thực sự nhận được nhiều thông số dựa trên đó bạn có thể quyết định giá trị bạn muốn thay thế nhưng chúng tôi không cần bất kỳ giá trị nào cho tác vụ này.

Tuy nhiên, nó là tốt để biết về họ, MDC có một lớn documentation on the topic

+0

Tuyệt vời, cảm ơn rất nhiều vì phản ứng cực nhanh và hữu ích. – Gids

+0

Tôi nghĩ rằng điều này sẽ không làm việc trong IE 6 nhưng trên thực tế nó không. Hóa ra IE 5 là phiên bản cuối cùng không hỗ trợ chức năng như tham số thứ hai trong String.replace. –

2

Dưới đây là một phiên bản mà không sử dụng một biểu thức chính quy. Bạn có thể sử dụng phương pháp split() của String, mặc dù thẳng thắn tôi sẽ sử dụng phiên bản biểu thức chính quy của bộ đệm.

var testVar = "My first line\n\nMy second line\n\nMy third line"; 
var lines = testVar.split("\n\n"), newStringParts = []; 
for (var i = 0, len = lines.length; i < len; ++i) { 
    newStringParts.push(i + 1); 
    newStringParts.push(lines[i]); 
} 
alert(newStringParts.join("\n")); 
+1

Bạn nên xem xét các giải pháp thay thế phi regexp –

0

Để thay thế đường dẫn hình ảnh chỉ với tên trong html tôi đã sth thích

html='hello <img src="../../../../yahoo/images/icons/common/image_one.png">a<img \ 
src="add.png"> xyz <table><tbody><tr><td>He<img src="document_add.png">loo<img\ 
src="document_add.png"></td></tr></tbody></table><img src="CD_delete.png"><img src="check.png">' 


html.replace(/src="(.*?)"/ig, function($1){return 'src="'+$1.match(/([^\/\\]+)\.(\w+)/)[0]+'"' }); 

sản lượng này sẽ

"hello <img src="image_one.png">a<img src="src="add.png"> xyz <table><tbody><tr><td>He<img src="src="document_add.png">loo<img src="src="document_add.png"></td></tr></tbody></table><img src="src="CD_delete.png"><img src="src="check.png">" 
Các vấn đề liên quan