ES6のテンプレート構文を使えないブラウザ(IE11とか)でも、似たような事がしたいとき用のメモ。
C#とかVB.NetのString.Format()みたいな使い方が可能。
console.log("aaa,{0},ccc,{1},eee".format("bbb","ddd"));
// "aaa,bbb,ccc,ddd,eee"
// フォーマットを変数に入れておくことも出来る分、テンプレートリテラルより扱いやすいかも
let str = "aaa,{0},ccc,{1},eee";
str.format("bbb","ddd");
// "aaa,bbb,ccc,ddd,eee"
事前準備として、以下のコードをでString.format()メソッドを作成しておく。
(function(){
if (!String.prototype.format) {
String.prototype.format = function () {
var args = arguments;
return this.replace(/{(\d+)}/g, function (match, number) {
return typeof args[number] != 'undefined'? args[number]: match;
});
};
}
})();