用循环替换简单Javascript

用循环替换简单Javascript,javascript,regex,string,replace,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]); } var-str=''; var参数=[];

我尝试用数组索引值替换字符串中的所有发生,如下所示

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]);
}
var-str='';
var参数=[];
参数push('Url','TitleDisplay');
用于(参数中的i){
var x=/'{'+i+'}'/g;
str=str.replace(x,参数[i]);
}
无论我做什么,我似乎都无法使它发挥作用。删除“/g”只适用于一个匹配项,但不是所有匹配项。我知道这是基本的,但就我个人而言,我无法让它工作。

尝试使用以下方法:

var x = new RegExp("\\{" + i + "\\}", "g");
与此相反:

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

如果需要动态,可以构建regexp对象

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);
​
var-str='';
var参数=[];
参数push('Url','TitleDisplay');
对于(变量i=0;i

代码:


replace方法循环遍历字符串(因为regex中的/g),并查找{n}的所有实例,其中n是一个数字$1捕获数字,函数将{n}替换为params[n]。

如果您想跳过正则表达式解决方案,该方法如何

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

    return inputString;
}

不要将
用于。。。在
for arraysCan你能分享你的代码和你使用的输入字符串吗?对我来说,我成功地在各种不同的领域使用了它projects@emotality这是因为您可能正在用相同的字符串替换前面或结尾的字符串
function replaceAllOccurrences(inputString, oldStr, newStr) 
{
    while (inputString.indexOf(oldStr) >= 0)
    {
        inputString = inputString.replace(oldStr, newStr);
    }

    return inputString;
}