2012-01-19 19 views

Respuesta

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

+1, ni siquiera me di cuenta que podría reemplazar una función. –

+2

+1 También puede eliminar 'i' utilizando' return a.shift() '(aunque' a' estaría vacío después). – pimvdb

+1

@Andrew casi cualquier cosa puede tomar una función. –

7

un poco tonto para decirlo todo en una línea, pero:

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


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

No es tonto - ese es el hermoso código –

+1

Sería más hermoso si sis str = str.replace ("?", Arr [i ++]); –

+0

Sí, estaba pensando en eso yo mismo ... Actualizando ... ¡Y gracias por el comentario! –

3

Usted podría utilizar vsprintf. Aunque si incluye sprintf, es mucho más que una línea.

vsprintf('Hello %s, welcome to %s', [foo, bar]); 
Cuestiones relacionadas