一段键值对字符串:
str="1=100&2=22&3=77&5=93&6=321&7=0&"如何根据键,替换其对应的值:
function replacebyid(id,value){...}如:replacebyid(1,909)则str="1=909&2=22&3=77&5=93&6=321&7=0&"如:replacebyid(2,88)则str="1=100&2=88&3=77&5=93&6=321&7=0&"

解决方案 »

  1.   

    try...<script type="text/javascript">
    function replacebyid(str, id, value)
    {
        var reg = new RegExp("\\b" + id + "=\\d+");
        str = str.replace(reg,  id + "=" + value);
        return str;
    }
    var test = "1=100&2=22&3=77&5=93&6=321&7=0&";
    document.write(replacebyid(test, 1, 909) + "<br />");
    document.write(replacebyid(test, 2, 88) + "<br />");
    </script>
    /*---------输出---------
    1=909&2=22&3=77&5=93&6=321&7=0&
    1=100&2=88&3=77&5=93&6=321&7=0&
    */
      

  2.   


    function replacebyid(id,value){
        var re = new RegExp("(^|&)" + id + "=(\\S+?)(&|$)","g");
        var n = re.exec(str);
        if(n) str = str.replace(n[0], n[1] + id + "=" + value + n[3])
        return str;
    }var str="1=123&2=22&3=77&5=93&6=321&7=0&"
    alert(replacebyid(1,909))
    var str="1=123&2=22&3=77&5=93&6=321&7=0&"
    alert(replacebyid(2,88))
      

  3.   

            alert(replacebyid(1,909));
            alert(replacebyid(2,88));
            
            var str="1=100&2=22&3=77&5=93&6=321&7=0&";
            function replacebyid(id,value){
                var reg=new RegExp("^(.*?"+id+"[=])([^&]+)(.*)$");
                reg.exec(str);
                return RegExp.$1+value+RegExp.$3;
            }
      

  4.   

    function replacebyid(str, id, value) {
        return str.replace(/(\d+)=\d+/g,
            function() {
                return arguments[1] == id ? id + '=' + value : arguments[0];  
            } 
        );
    }
    var test = "1=100&2=22&3=77&5=93&6=321&7=0&";
    document.write(replacebyid(test, 1, 909) + "<br />");
    document.write(replacebyid(test, 2, 88) + "<br />");