我有一个名为String的变量,其中有一个名为bar的标记。var String = "Foo <Object.1>"
我有一个名为Object的对象var Object = {1:"Bar",2:"More Bar",3:"Even more Bar"}
,现在我需要标记Object.1来替换所以我最终得到这样的东西:var String = "Foo Bar"
这里有一个问题:我可能在一个字符串中有多个(和不同的)标签,我不知道该字符串中有哪些标签和多少标签,并且对象内部可能还有数百万个变量。 / p>
寻求帮助, 卢卡
答案 0 :(得分:2)
您可以使用适当的变量名称和替换对象的全局变量String#replace
来访问window
对象和密钥,从字符串中获取。
var string = "Foo <object.1>",
object = { 1: "Bar", 2: "More Bar", 3: "Even more Bar" };
string = string.replace(/<([^.]+)\.([^>]+)>/, function (_, v, k) {
return window[v][k];
});
console.log(string);
更好的方法是将替换零件存储到对象中并将零件作为键,而不使用window
对象。那么对象也可以是本地的。
var string = "Foo <object.1>",
values = { object: { 1: "Bar", 2: "More Bar", 3: "Even more Bar" } };
string = string.replace(/<([^.]+)\.([^>]+)>/, function (_, k1, k2) {
return values[k1][k2];
});
console.log(string);
答案 1 :(得分:0)
使用String.prototype.replace()
函数的解决方案:
var str = "Foo <Object.1> some text, <Object.2> data, <Object.3> other",
values = {1:"Bar", 2:"More Bar", 3:"Even more Bar"};
str = str.replace(/<Object\.(\d+)>/g, function (m0, m1) {
return (values[m1])? values[m1] : m0; // replace if `Object` number exists as a key of predefined `values` object
});
console.log(str);
&#13;