在像
这样的字符串中"this is a sample string"
我怎样才能替换像
这样的字符列表['t', 'h', 's', 'g']
带有相应的字符列表,如
['X', 'Y', 'Z', 'K']
以快速方式,并获得此结果:
"XYiZ iZ a Zample ZXrinK"
答案 0 :(得分:3)
"this is a sample string".replace(/t|h|s|g/g, function(v) {
var map = {t: 'X', h: 'Y', s: 'Z', g: 'K'}
return map[v];
}); //output XYiZ iZ a Zample ZXrinK
注意:您可以通过以下方式加快速度:
答案 1 :(得分:0)
检查以下代码
watch: {
sass: {
files: '<%= dir.sass %>/**/*.scss',
tasks: ['sass'],
},
js: {
files: '<%= dir.js_dev %>/**/*.js',
tasks: ['newer:jshint', 'copy:js_vendor', 'copy:js'],
},
img: {
files: '<%= dir.img_dev %>/**/*.{png,jpg,jpeg,gif,svg}',
tasks: ['newer:imagemin']
},
// grunt: {
// files: 'Gruntfile.js'
// }
}
输出:这是一个样本STrinG
答案 2 :(得分:0)
function mapReplace(str, map) {
return str.split('').reduce(function(acc, c) {
acc.push(map[c] === undefined ? c : map[c]);
return acc;
}, []).join('');
}
//returns 'XYiZ iZ a Zample ZXrinK'
mapReplace("this is a sample string", {t: 'X', h: 'Y', s: 'Z', g: 'K'});
此替代方法应该比正则表达式更快。</ strike>
在实际运行基准测试之后,很明显正则表达式取代了这种方法4比1: