2009-12-24 71 views
5

我想用我的字符串中的空行替換迭代數字使用Javascript RegExp用迭代數字替換每個匹配

例如, 更換

字符串:

"My first line 

My second line 

My third line" 

" 
1 

My first line 

2 

My second line 

3 

My third line" 

我可以匹配和使用

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

但是我掙扎補充說,將增加一個函數替換這些行一個迭代號碼給每個人。

你能幫忙嗎?

TIA,

導遊服務

+0

請在每次開始縮進四個空格你的代碼塊線。 – Gumbo 2009-12-24 13:42:42

+0

感謝您的提醒,我會確保在將來做到這一點 – Gids 2009-12-24 13:54:40

回答

8

是的,你可以做到這一點在JavaScript。您只需要將一個函數作爲第二個參數傳遞給replace

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

功能真正得到了很多基於參數上,你可以決定你要替換什麼樣的價值,但我們不需要任何人的這個任務。

然而,這是很好的瞭解他們,MDC有很大documentation on the topic

+0

非常感謝您的超快速和有益的迴應。 – Gids 2009-12-24 13:56:04

+0

我認爲這不適用於IE 6,但事實上它確實如此。原來IE 5是不支持函數的最後一個版本,作爲String.replace中的第二個參數。 – 2009-12-24 14:18:23

2

這裏是不使用正則表達式的版本。您可以使用Stringsplit()方法,但坦率地說我會使用整潔的正則表達式版本。

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

查看非正則表達式替代方案總是一個好主意 – 2009-12-24 14:56:15

0

爲了與剛剛在HTML名字替換圖像路徑我某事像這樣

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]+'"' }); 

輸出將是

"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">"