Использование Javascript RegExp для замены каждого совпадения итерационным числом - PullRequest
7 голосов
/ 24 декабря 2009

Я хочу заменить пустые строки в моей строке итерационным числом

например. замена

Строка:

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

Однако я изо всех сил пытаюсь добавить функцию, которая будет добавлять итерационный номер к каждому.

Вы можете помочь?

ТИА

ГИД

Ответы [ 3 ]

9 голосов
/ 24 декабря 2009

Да, вы можете сделать это в JavaScript. Вам просто нужно передать функцию в качестве второго аргумента replace.

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

Функция на самом деле получает множество параметров, на основе которых вы можете решить, какое значение вы хотите заменить, но нам не нужен ни один из них для этой задачи.

Тем не менее, полезно знать о них, у MDC есть отличная документация по теме

2 голосов
/ 24 декабря 2009

Вот версия без использования регулярного выражения. Вы можете использовать split() метод String, хотя, честно говоря, я бы использовал более аккуратную версию регулярного выражения.

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") );
0 голосов
/ 19 октября 2010

Чтобы заменить пути к изображениям просто именами в 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">"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...