-2

我想我问错了这个问题,不幸的是,所有提交的内容并不完全符合我所需要的只是替换(到第 n 个数字......):

var temp = '1 1 <br>random text</br> 1 1 <br>random text</br> 1 1 <br>random text</br> 1 1';

to: (但也保持以前的文本+标签)

var temp = '1 1 <br>random text</br> 2 2 <br>random text</br> 3 3 <br>random text</br> 4 4';
4

4 回答 4

2

基于显着变化的问题

请参阅正则表达式String.prototype.replace

Javascript

function modify(string) {
    var n = 0;

    return temp.replace(/\b1(\s+)1\b/g, function (all, whitespace) {
        n += 1;

        return n + whitespace + n;
    });
}

var temp = '1 1 <br>random text</br> 1 1 <br>random text</br> 1 1 <br>random text</br> 1 1';

console.log(modify(temp));

输出

1 1 <br>random text</br> 2 2 <br>random text</br> 3 3 <br>random text</br> 4 4 

jsfiddle 上

于 2013-07-07T16:56:08.623 回答
1

除了您的标记似乎不正确之外,您可以使用循环并将迭代器计数到有限的数量:

var items = 3;
var temp = '';

for (var i = 1; i <= items; i++) {
    temp += "<nr=" + i + ">lorem ipsum<nr=" + i + ">";
}

console.log(temp);
于 2013-07-07T15:28:53.957 回答
1

您可以使用以下内容。底部有一个小提琴。

var temp = '<nr="1">lorem ipsum<nr="1">\
            <nr="1">lorem ipsum<nr="1">\
            <nr="1">lorem ipsum<nr="1">';

var tags = temp.split('            ');
temp = "";
for(var i = 0; i < tags.length; i++){
    var tmp = tags[i].replace('<nr="1">', '<nr="'+(i+1)+'">');
    tmp = tmp.replace('<nr="1">', '<nr="'+(i+1)+'">');
    temp += tmp;
}
console.log(temp);

http://jsfiddle.net/ZcYhZ/

于 2013-07-07T15:43:14.213 回答
1

如果输入可以是任何东西而不是你自己构建的东西,那么正则表达式是你最好的选择。

var n = 0;
var rx = /(<nr=")1(">[^<]*<nr=")1(">)/g;
var result = temp.replace(rx, function(whole, one, two, three){
    n += 1;
    return one + n + two + n + three;
});
于 2013-07-07T15:54:23.800 回答