Javascript替换为带正则表达式的字符串中的变量
我想用预定义变量替换字符串中的许多关键字,示例如下, 但现在$1只显示变量名,不显示变量内容,任何人都可以帮助我,请 正确: 1111{t:aa}Javascript替换为带正则表达式的字符串中的变量,javascript,Javascript,我想用预定义变量替换字符串中的许多关键字,示例如下, 但现在$1只显示变量名,不显示变量内容,任何人都可以帮助我,请 正确: 1111{t:aa} 2222{t:bb} 3333{t:cc} 致: 1111测试1 2222Test2 3333测试3 不是: 1111aa 222BB 3333cc 代码: regexp常量(即/…/语法)不能直接引用变量 另一种解决方案是使用.replace函数的回调参数: var map = { aa: 'Test1', bb: 'Test2',
2222{t:bb}
3333{t:cc} 致: 1111测试1
2222Test2
3333测试3 不是: 1111aa
222BB
3333cc 代码: regexp常量(即
/…/
语法)不能直接引用变量
另一种解决方案是使用.replace
函数的回调参数:
var map = {
aa: 'Test1',
bb: 'Test2',
cc: 'Test3'
};
var str_before = "1111{t:aa}\n2222{t:bb}\n3333{t:cc}";
var str_after = str_before.replace(/{t:(\w+)}/g, function(match, p1) {
return map.hasOwnProperty(p1) ? map[p1] : '';
});
这还有一个优点,即从名称到值的映射现在很容易配置,而不需要为每一个单独声明一个变量。有一个NPM包用于此目的,它允许您传入字符串和要替换它们的变量数组。找到一个简单的示例以及以下软件包的链接: 示例:
var str = "This is a {0} string for {1}"
var newStr = stringInject(str, ["test", "stringInject"]);
// This is a test string for stringInject
NPM/GitHub链接:
var str = "This is a {0} string for {1}"
var newStr = stringInject(str, ["test", "stringInject"]);
// This is a test string for stringInject
aww,我的简单解决方案正好与。。。但我羞于把它贴出来。