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三个数值的?
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三个数值的?
正则表达式replace(regexp,function(match,p1))//match就是要匹配的字符串,p1对应捕获的字符串即()里的字符.在你这例子每次替换括号里分别捕获的1,2,3即index了
换成这样运行下,就更好理解了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):原字符串