2011-02-07 3 views
6

Не знаю, почему, но я не могу заменить, по-видимому, простой заполнитель.javascript - string replace

Мой подход

var content = 'This is my multi line content with a few {PLACEHOLDER} and so on'; 
content.replace(/{PLACEHOLDER}/, 'something'); 
console.log(content); // This is multi line content with a few {PLACEHOLDER} and so on 

Любая идея, почему она не работает?

Заранее благодарен!

+0

Add 'вокруг {ЗАПОЛНИТЕЛЬ} :-) –

+0

вам нужно сохранить результат заменить где-то: попробуйте это: 'var content = 'это {placeholder}'; content = content.replace (/ {placeholder} /, 'something'); оповещение (содержание); ' должен работать – Shrinath

ответ

10

строка в JavaScript заменить не изменяет исходную строку. Кроме того, ваш образец кода заменяет только один экземпляр строки, если вы хотите заменить все, вам нужно добавить «g» в регулярное выражение.

var content = 'This is my multi line content with a few {PLACEHOLDER} and so on'; 
var content2 = content.replace(/{PLACEHOLDER}/g, 'something'); 
console.log(content2); // This is multi line content with a few {PLACEHOLDER} and so on 
+0

спасибо, что это именно то, что мне нужно! – n00b

2

Попробуйте так:

var str="Hello, Venus"; 
document.write(str.replace("venus", "world")); 
16

Вот что-то немного более общий характер:

var formatString = (function() 
{ 
    var replacer = function(context) 
    { 
     return function(s, name) 
     { 
      return context[name]; 
     }; 
    }; 

    return function(input, context) 
    { 
     return input.replace(/\{(\w+)\}/g, replacer(context)); 
    }; 
})(); 

Использование:

>>> formatString("Hello {name}, {greeting}", {name: "Steve", greeting: "how's it going?"}); 
"Hello Steve, how's it going?" 
+0

приятный - спасибо! – n00b