6

以下のように、文字列を含むすべてのオカレンスを配列インデックス値に置き換えようとしています。

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'を削除すると、1つの一致で機能しますが、すべてではありません。私はこれが基本的であることを知っていますが、私のスライドのために私はそれを機能させることができません。

4

4 に答える 4

8

ここでフィドル

コード:

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

replaceメソッドは文字列をループし(正規表現の/ gのため)、{n}のすべてのインスタンスを検索します。ここでnは数値です。$ 1は数値を取得し、関数は{n}をparams[n]に置き換えます。

于 2012-07-12T07:44:36.200 に答える
2

これを使用してみてください:

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

これの代わりに:

var x = /'{' + i + '}'/g;
于 2012-07-12T06:36:00.560 に答える
2

動的にする必要がある場合は、正規表現オブジェクトを作成できます

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/

于 2012-07-12T06:36:44.653 に答える
1

正規表現ソリューションをスキップしたい場合はどうですか..

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

    return inputString;
}
于 2014-08-07T19:29:19.010 に答える