javascript中的replace函数同时替换多个字符串

wapysun 2009-10-16 10:34:29
javascript中的replace函数同时替换多个字符串


如果在一句话中要把多个不同的字符串分别替换成不同的字符串怎么替换 比如说“my javascript is very poor,who can help me?" 要在这句话中分别替换 my-->his is-->was can-->could 改怎么做?
...全文
20238 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wapysun 2009-10-16
  • 打赏
  • 举报
回复
我试试看
王集鹄 2009-10-16
  • 打赏
  • 举报
回复
5楼的代码虽然繁琐,但扩展性比较强,只要定义字典即可。
王集鹄 2009-10-16
  • 打赏
  • 举报
回复 6
更好的解决方案是这样:
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”
还有单词出现的位置次数未知的情况
BeenZ 2009-10-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sohighthesky 的回复:]
引用 1 楼 beenz 的回复:
HTML code <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>

有点问题好像,后面的截断了
[/Quote]
是的
少写了个$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>
wcwtitxu 2009-10-16
  • 打赏
  • 举报
回复 2




Array.prototype.each = function(trans) {
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);
  • 举报
回复
@wcwtitxu 太优秀了
sohighthesky 2009-10-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 beenz 的回复:]
HTML code<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>
[/Quote]
有点问题好像,后面的截断了
sohighthesky 2009-10-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 beenz 的回复:]
HTML code<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>
[/Quote]
学习
sohighthesky 2009-10-16
  • 打赏
  • 举报
回复
应该只能多次替换:

var str="my javascript is very poor,who can help me?"
alert(str.replace(/\bmy\b/i,"his").replace(/\bis\b/i,"was").replace(/\bcan\b/i,"could"));/i,全局匹配,\b匹配空格或起始

BeenZ 2009-10-16
  • 打赏
  • 举报
回复

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

87,990

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧