Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript替换为带正则表达式的字符串中的变量_Javascript - Fatal编程技术网

Javascript替换为带正则表达式的字符串中的变量

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',

我想用预定义变量替换字符串中的许多关键字,示例如下, 但现在$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',
    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,我的简单解决方案正好与。。。但我羞于把它贴出来。