2012-01-19 7 views

答えて

20
var s = 'Hello ?, welcome to ?'; 
var a = ['foo', 'bar']; 
var i = 0; 
alert(s.replace(/\?/g,function(){return a[i++]})); 
+2

+1、私は交換が機能を果たすことができることを認識していませんでした。 –

+2

+1 'return a.shift()'を使って 'i'を取り除くこともできます(' a'は後で空になります)。 – pimvdb

+1

@Andrewほとんどの機能を利用できます。 –

7

1行にすべてを置くために愚かなの種類、しかし:

var str = 'Hello ?, welcome to ?', 
    arr = ['foo', 'bar'], 
    i = 0; 


while(str.indexOf("?") >= 0) { str = str.replace("?", arr[i++]); } 
+1

愚かではない - それは美しいコード –

+1

あなたがsis str = str.replace( "?"、arr [i ++]); –

+0

はい、私はちょうど自分自身を考えていた..更新中...そしてコメントに感謝! –

3

あなたはvsprintfを使用することができます。 sprintfをインクルードしても、それは1行以上です。

vsprintf('Hello %s, welcome to %s', [foo, bar]); 
関連する問題