[英]Replace multiple parts of string simultaneously
说我有以下代码:
var str = "abcde";
str.replace("a", "ab")
str.replace("b", "c")
str
的值从abcde
到abbcde
到acccde
。 我将如何使其同时执行两个操作,以使str
的值从abcde
变为abccde
呢?
编辑:我说的是与此类似的任何情况,而不仅仅是这个特定情况。
当replace包含此类模式时,请先执行独立的操作,然后再执行以下其他操作。
var str = "abcde";
str.replace("b", "c");
str.replace("a", "ab");
否则使用地图替换它们:
var str = "abcde";
var mapObj = {
a:"ab",
b:"c"
};
str = str.replace(/a|b/gi, function(matched){
return mapObj[matched];
});
console.log(str);
输出:
abccde
您需要将a
和b
都匹配一个正则表达式,然后使用一个函数来区分它是a
还是b
。 请参阅文档以了解替换功能。
var str = 'abcde'
var newStr = str.replace(/[ab]/g, function (match) {
switch (match) {
case 'a':
return 'ab'
case 'b':
return 'c'
default:
return '???' // or throw error
}
})
console.log(newStr) // -> abccde
如果您有要替换的字符串列表,则可能需要查看如何转义要在正则表达式中使用的字符串 ,然后使用RegExp的构造函数构造要用于替换函数的正则表达式。
var replacements = {'a': 'ab', 'b': 'c'}
var keys = Object.keys(replacements)
// escapeRegExp function from https://stackoverflow.com/a/6969486/8557739
var escapedKeys = keys.map(escapeRegExp)
var re = RegExp(escapedKeys.join('|'), 'g') // re = /a|b/g
// then continue on like before
var str = 'abcde'
var newStr = str.replace(re, function (match) {
for (var key in replacements) {
if (match === key) {
return replacements[key]
}
}
return '???' // or throw error
})
console.log(newStr) // -> abccde
var str =“ abcde”; str.replace(/ a | b / gbbc);
您也可以使用此正则表达式,因为它将用“ b”替换“ a”,用“ bc”替换“ b”。 如果您想为您的String全局应用此正则表达式,则可以使用上述的'/ g',否则在b之后的/即可。 要更换链条,请使用“ |” 就像我在a | b之间所做的那样。
我找到了一种使用数组的方法。
var str = "abcde";
var str2 = str.split("");
for(var i = 0; i < str2.length; i++){
if(str2[i] === "a"){
str2[i] = "ab"
} else if(str2[i] === "b"){
str2[i] = "c";
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.