javascript中的replace函数同时替换多个字符串
如果在一句话中要把多个不同的字符串分别替换成不同的字符串怎么替换 比如说“my javascript is very poor,who can help me?" 要在这句话中分别替换 my-->his   is-->was   can-->could  改怎么做? 

解决方案 »

  1.   


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

  2.   

    应该只能多次替换: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匹配空格或起始
      

  3.   

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

  4.   

    是的
    少写了个$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>
      

  5.   

    更好的解决方案是这样:
    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”
    还有单词出现的位置次数未知的情况