问题描述
function(s, c) { return s.replace(/{(w+)}/g, function(m, p) { return c[p]; })} 上面这个函数是什么意思啊?
解决方案
Javascript中的replace函数的第二个参数可以是函数。如果是函数,将会用该函数的返回值进行替换。/{(w+)}/g 匹配所有 花括号中间的文字。比如a{b}c这样会匹配出b。你的代码中的那个c多半是个map或对象。说到这你可能明白了吧,是个参数替换的方法。下面是示例,看得清楚些。function abc(s, c) {return s.replace(/{(w+)}/g, function(m, p) {console.log(m + ", " + p);//打印参数。return c[p];})}console.log(abc("a{b}c", {b : "BBB"}));输出如下:{b}, baBBBc <-最终结果。
解决方案二:
正则表达式:/{(w+)}/g,意思要全局匹配带有花括号并且之间至少一个字母的字符串,m是匹配成功的字符串,正则中的括号是得到匹配成功的字符传中分组匹配的结果,比如上面的例子,匹配 “a{b}c”,m 的值为{b},那么分组匹配的结果就是 b,改正则的意图:寻找出字符传s中花括号所包含的的字符对应的C的属性的值,替换掉整个花括号的内容。
时间: 2024-10-27 00:57:46