現在、文字列内のいくつかのプレースホルダーを置き換える単純な書式設定関数を作成しています。
var format = function (a, c) {
return a.replace(/{ *([^} ]+) *}/g, function (b, a) {
b = c;
a.replace(/[^.|\[\]]+/g, function (a) {
b = b[a];
});
return b;
});
};
構文は現在中括弧表記 を使用していますが、代わりに 1 パーセントで動作するように -pattern を{key}
変更しようとしています。RegExp
%key
var pattern = /{ *([^} ]+) *}/g;
{}
かっこをパーセントに置き換えようとしました%
が、それでも正しく機能しません。
var pattern = /% *([^% ]+) */g;
元のパターンは、次の条件で期待どおりに機能します。
var data = {
obj: {
foo: 'Foo',
bar: 'Bar'
},
arr: ['Foo', 'Bar']
};
var objTest = '{obj.foo}, is not equal to {obj.bar}.'
format(objTest, data) // => 'Foo, is not equal to Bar.'
var arrTest = '{arr[0]}, is not equal to {arr[1]}.'
format(arrTest, data) // => 'Foo, is not equal to Bar.'
変更したパターンを使用すると、各プレースホルダー置換後の最後の文字が削除されるようです。
'%obj.foo, is not equal to %obj.bar.' // => 'undefined is not equal to Bar'
'%arr[0], is not equal to %arr[1]' // => 'undefined is not equal to Bar'
中括弧の代わりにpattern
パーセンテージで使用できるように変更する方法はありますか?%
{}