2009-12-24 74 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">"