Используя 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,

Ценурозы

7
задан vava 24 December 2009 в 13:46
поделиться

2 ответа

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

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

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

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

9
ответ дан 6 December 2019 в 23:06
поделиться

Вот версия без использования регулярного выражения. Вы можете использовать метод 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") );
2
ответ дан 6 December 2019 в 23:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: