function format(string) {
  var args = arguments;
  var pattern = new RegExp("%([1-" + arguments.length + "])", "g");
  return String(string).replace(pattern, function(match, index) {
    return args[index];
  });
};这个函数实现了模板替换,你可以在要动态替换的地方使用 %1 到 %9 标记,然后其余的参数就会依次替换这些地方。例如:format("And the %1 want to know whose %2 you %3", "papers", "shirt", "wear");上面的脚本就会返回"And the papers want to know whose shirt you wear"
调试成功,但不知道function(match, index) {return args[index];}这句中index变量如何赋值为1、2、3三个数值的?

解决方案 »

  1.   


    正则表达式replace(regexp,function(match,p1))//match就是要匹配的字符串,p1对应捕获的字符串即()里的字符.在你这例子每次替换括号里分别捕获的1,2,3即index了
      

  2.   


    换成这样运行下,就更好理解了function format(string) { 
      var args = arguments; 
      var pattern = new RegExp("%([1-" + arguments.length + "])", "g"); 
      return String(string).replace(pattern, function(match, index,c,d) { 
        alert(match+','+index+','+c+','+d)
        return args[index]; 
      }); 
    }format("And the %1 want to know whose %2 you %3", "papers", "shirt", "wear");javascript中replace进行匹配后一般得到四个参数
    第一个(match):匹配模式
    第二个(index):其实这里不是index,而是在括号中匹配的值(除去那个'%'不就是数字了么!~)
    第三个(c):是匹配的字符,在原字符串中的位置
    第四个(d):原字符串