求一个动态正则类似StringBuilder里的AppendFormat,要把里面的{n}替换成参数的内容。不知道怎么写这个表达式,真是愁死人了。

解决方案 »

  1.   


    <script type="text/javascript">
    function appendFormat(format){
    var argLen = arguments.length;
    var args = arguments;
    var s = 1, e = argLen;
    if(argLen == 2){
    if(args[1] instanceof Array){
    args = args[1];
    s = 0, e = args.length;
    }
    }
    for(var i=s; i < e; i++){
    format = format.replace("{" + (i-s) + "}", args[i]);
    }
    return format;
    }
    var var1 = 111;
    var var2 = 2.22;
    var var3 = "abcd";
    var var4 = [3, 4.4, 'X'];alert(appendFormat("1) {0}", var1));
    alert(appendFormat("2) {0}, {1}", var1, var2));
    alert(appendFormat("3) {0}, {1}, {2}", var1, var2, var3));
    alert(appendFormat("4) {0}, {1}, {2}", var4));</script>
      

  2.   

    楼上的不错了,还加了数组的处理,下面的是MZ以前写的,楼主也可以参考一下:
    <script type="text/javascript">
    String.prototype.format=function()
    {
      if(arguments.length==0) return this;
      for(var s=this, i=0; i<arguments.length; i++)
        s=s.replace(new RegExp("\\{"+i+"\\}","g"), arguments[i]);
      return s;
    };alert("http://{0}/{1}/{2}".format("www.meizz.com", "web", "abc.htm"));
    alert("请输入{0},输完后再按存盘按钮".format("姓名"));
    </script>
      

  3.   

    dh20156  兄台谢了,我主要是为了 RegExp("\\{"+i+"\\}","g")这个东东 呵呵。结了。