2011-02-07 128 views
6

不知道为什么,但我似乎无法取代看似简单的占位符。JavaScript - 字符串替换

我的做法

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

增加 '' 围绕{}占位符:-)你需要存储的地方替换的结果 – 2011-02-07 10:54:40

+0

:试试这个:`var content ='this is {placeholder}'; content = content.replace(/ {placeholder} /,'something');警报(内容); ` 应该工作 – Shrinath 2011-02-07 11:01:56

回答

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 2011-02-07 11:02:58

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?"