2012-01-19 66 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

@安德魯幾乎任何事物都可以發揮作用。 –

7

傻樣把它都在同一行,但:

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,它遠不止一行。

vsprintf('Hello %s, welcome to %s', [foo, bar]); 
相關問題