用循环替换简单的Javascript

Simple Javascript replace with a loop

本文关键字:Javascript 简单 替换 循环      更新时间:2023-09-26

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

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"只适用于一个匹配项,但不能全部删除。我知道这是基本的,但对我来说,我无法让它发挥作用。

点击此处

代码:

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

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

尝试使用这个:

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

http://jsfiddle.net/LByBT/

如果您想跳过正则表达式解决方案,该怎么办。。

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