2012-01-19 13 views

Odpowiedz

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

+1, nie wiedziałem nawet, że zamiennik może przyjąć funkcję. –

+2

+1 Można też wyeliminować 'i' używając' return a.shift() '(chociaż' a' będzie puste). – pimvdb

+1

@Andrew prawie wszystko może pełnić funkcję. –

7

trochę głupie, aby umieścić to wszystko w jednej linii, ale:

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


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

Not głupi - to piękny kod –

+1

Byłoby piękniejsze, jeśli sis str = str.replace ("?", Arr [i ++]); –

+0

Tak, właśnie myślałem o sobie ... Aktualizuję ... I dziękuję za komentarz! –

3

Można użyć vsprintf. Chociaż jeśli umieścisz sprintf, to jest to więcej niż jedna linia.

vsprintf('Hello %s, welcome to %s', [foo, bar]); 
Powiązane problemy