Data la stringa 'Hello ?, welcome to ?'
e l'array ['foo', 'bar']
, come ottengo la stringa 'Hello foo, welcome to bar'
in una singola riga di codice con JavaScript (possibilmente con jQuery, Underscore, ecc.)?Come sostituire punti interrogativi all'interno di una stringa con i valori di un array?
risposta
var s = 'Hello ?, welcome to ?';
var a = ['foo', 'bar'];
var i = 0;
alert(s.replace(/\?/g,function(){return a[i++]}));
+1, non mi ero nemmeno reso conto che la sostituzione potesse svolgere una funzione. –
+1 Potresti anche eliminare 'i' usando' return a.shift() '(anche se' a' sarebbe vuoto in seguito). – pimvdb
@Andrew quasi tutto può avere una funzione. –
Tipo di stupido per mettere tutto su una sola riga, ma:
var str = 'Hello ?, welcome to ?',
arr = ['foo', 'bar'],
i = 0;
while(str.indexOf("?") >= 0) { str = str.replace("?", arr[i++]); }
Non stupido - questo è bellissimo codice –
Sarebbe più bello se si fosse str = str.replace ("?", Arr [i ++]); –
Sì, stavo solo pensando a me stesso .. Aggiornamento ... E grazie per il commento! –
Si potrebbe utilizzare vsprintf. Anche se includi sprintf, è molto più di una riga.
vsprintf('Hello %s, welcome to %s', [foo, bar]);
Devono essere punti interrogativi? – Paul
Perché deve essere una singola riga? –