如果你只想实现下面的功能
<script language=javascript>
String.prototype.Format2 = function()
{
  if(arguments.length==0) return this;
  var temp=new Array();
  var arg = arguments;
  for(var i=0;i<arguments.length;i++)
  temp.push(arguments[i])
  var i=0
  return(this.replace(/\{\d+\}/g,function(a){return temp[i++]}))
}
alert("aaa{0}bbb{1}ccc".Format2("","333"));
</script>

解决方案 »

  1.   

    String.prototype.Format = function(str)
    {
      for(var i=0, s=this, n=arguments.length; i<n; i++) {
        s = s.split("{"+ i +"}").join(arguments[i]);
      }
      return s;
    }
      

  2.   

    String.prototype.Format = function(str)
    {
      if(arguments.length==0) return this;
      try {
        var arg = arguments;
        return this.replace(/\{(\d+)\}/g, function(a,b){return arg[b]});
      }
      catch (ex) {
        for(var i=0, s=this, n=arguments.length; i<n; i++) {
          s = s.split("{"+ i +"}").join(arguments[i]);
        }
      }
      return s;
    }
      

  3.   

    主要是arg[b]||a这里
    arg[0]是空字符所以就返回了a即{0}