QA@IT

JavaScriptで文字列に変数の内容をinterpolateするには?

7138 PV

Rubyだと、

i = 5
puts "You have #{i} items"

とやって、You have 5 items. という結果が得られますが、同様のことをJavaScriptでやるにはどうすればいいのでしょうか?

回答

素の JavaScript では、

["You have", i, "items"].join(" ")

みたいにやると比較的簡単です。

編集 履歴 (0)

ちょっと使い方や文法は違いますが、Douglas Crockford先生による、エグいアプローチを見つけました。

参考: http://javascript.crockford.com/remedial.html

if (!String.prototype.supplant) {
    String.prototype.supplant = function (o) {
        return this.replace(/{([^{}]*)}/g,
            function (a, b) {
                var r = o[b];
                return typeof r === 'string' || typeof r === 'number' ? r : a;
            }
        );
    };
}

と、プロトタイプを拡張してしまえば、

param = {domain: 'valvion.com', media: 'http://media.valvion.com/'};
url = "{media}logo.gif".supplant(param);

とすれば、urlには、

"http://media.valvion.com/logo.gif"

という文字列が代入されます。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。