javascript中的replace函数同时替换多个字符串
如果在一句话中要把多个不同的字符串分别替换成不同的字符串怎么替换 比如说“my javascript is very poor,who can help me?" 要在这句话中分别替换 my-->his is-->was can-->could 改怎么做?
如果在一句话中要把多个不同的字符串分别替换成不同的字符串怎么替换 比如说“my javascript is very poor,who can help me?" 要在这句话中分别替换 my-->his is-->was can-->could 改怎么做?
<script>
var s="my javascript is very poor,who can help me?"
var reg=/(\w*)my(.*)is(.*)can(.*)/g alert(s.replace(reg,"$1his$2was$3could"));</script>
alert(str.replace(/\bmy\b/i,"his").replace(/\bis\b/i,"was").replace(/\bcan\b/i,"could"));/i,全局匹配,\b匹配空格或起始
for (var i=0; i<this.length; i++)
this[i] = trans(this[i], i, this);
return this;
};
Array.prototype.map = function(trans) {
return [].concat(this).each(trans);
};
RegExp.escape = function(str) {
return new String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');
};
function properties(obj) {
var props = [];
for (var p in obj) props.push(p);
return props;
}
// ---------------------------------------------
var str = "my javascript is very poor,who can help me?";var replacements = {
"my" : "his"
, "is" : "was"
, "can": "could"
};
var regex = new RegExp(properties(replacements).map(RegExp.escape).join("|"), "g");
str = str.replace(regex, function($0) { return replacements[$0]; });
WScript.Echo(str);
少写了个$4...
这样<script>
var s="my javascript is very poor,who can help me?"
var reg=/(\w*)my(.*)is(.*)can(.*)/g alert(s.replace(reg,"$1his$2was$3could$4"));</script>
var s="my javascript is very poor,who can help me?"
s = s.replace(/\b(my|is|can)\b/g, function($0, $1) {
return {
"my": "his"
, "is": "was"
, "can": "could"
}[$1];
});
alert(s);
考虑出现:
“cancel”不至于替换成“couldcel”
还有单词出现的位置次数未知的情况