简单的Javascript替换为循环

时间:2012-07-12 06:25:54

标签: javascript regex string replace

我尝试用数组索引值替换所有出现的字符串,如下所示。

var str = '<a href="{0}" title="{1}">{1}</a>';
var params= [];
params.push('Url', 'TitleDisplay');

for (i in params) {
    var x = /'{' + i + '}'/g;
    str = str.replace(x, params[i]);
}

无论我做什么,我似乎无法让它发挥作用。删除'/ g'适用于一个匹配,但不是全部。我知道这是基本的,但对于我的内心,我无法让它发挥作用。

4 个答案:

答案 0 :(得分:4)

Fiddle here

代码:

var rx = /{([0-9]+)}/g;
str=str.replace(rx,function($0,$1){return params[$1];});

replace方法循环遍历字符串(因为正则表达式中的/ g)并找到{n}的所有实例,其中n是数字。 $ 1捕获数字,函数用params [n]替换{n}。

答案 1 :(得分:2)

尝试使用:

var x = new RegExp("\\{" + i + "\\}", "g");

而不是:

var x = /'{' + i + '}'/g;

答案 2 :(得分:0)

如果需要动态

,可以构建正则表达式对象
var str = '<a href="{0}" title="{1}">{1}</a>';
var params= [];
params.push('Url', 'TitleDisplay');

for (var i = 0; i < params.length; i++) {
    var x = new RegExp('(\\{'+i+'\\})', 'g');
    str = str.replace(x, params[i]);
}
alert(str);
​

http://jsfiddle.net/LByBT/

答案 3 :(得分:0)

如果您想跳过正则表达式解决方案,那该怎么做..

function replaceAllOccurrences(inputString, oldStr, newStr) 
{
    while (inputString.indexOf(oldStr) >= 0)
    {
        inputString = inputString.replace(oldStr, newStr);
    }

    return inputString;
}