Как заменить вопросительные знаки внутри строки значениями массива? - PullRequest
5 голосов
/ 19 января 2012

Учитывая строку 'Hello ?, welcome to ?' и массив ['foo', 'bar'], как мне получить строку 'Hello foo, welcome to bar' в одной строке кода с помощью JavaScript (возможно, с помощью jQuery, Underscore и т.

Ответы [ 3 ]

21 голосов
/ 19 января 2012
var s = 'Hello ?, welcome to ?';
var a = ['foo', 'bar'];
var i = 0;
alert(s.replace(/\?/g,function(){return a[i++]}));
7 голосов
/ 19 января 2012

Глупо ставить все это в одну строку, но:

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


while(str.indexOf("?") >= 0) { str = str.replace("?", arr[i++]); }
3 голосов
/ 19 января 2012

Вы можете использовать vsprintf .Хотя, если вы включите sprintf, это будет больше, чем одна строка.

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