首页 新闻 会员 周边

javascript的replace方法

0
悬赏园豆:60 [已解决问题] 解决于 2012-01-13 08:51

在“:假正经哥哥”的博客里看到这个方法: 

function Tp(temp, dataarry) {
          
            return temp.replace(/\$\{([\w]+)\}/g,
            function(s1, s2) { var s = dataarry[s2]; if (typeof (s) != "undefined") { return s; } else { return s1; } });
      
        }

求解,什么意思啊?

xinchuang的主页 xinchuang | 初学一级 | 园豆:3
提问于:2012-01-13 00:33
< >
分享
最佳答案
0
正则的()里面是子表达式, g 全程匹配
\w :匹配包括下划线的任何单词字符,等价于 [A-Z a-z 0-9_]

ECMAScript v3 规定,replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。

结合起来就是, 将字符串 temp里面 符合\$\{([\w]+)\}模式的匹配${...}的大括号里面的单词作为关联数组dataarray的key, 用dataarray[key]的值替代。

收获园豆:60
ChatinCode | 老鸟四级 |园豆:2272 | 2012-01-13 08:33

hi,您是看了ecmascript v3的文档吗?非常感谢!您给的答案非常详细。

xinchuang | 园豆:3 (初学一级) | 2012-01-13 08:47

您在那里找的replace方法的解释啊,baidu上都没有呢,真的直接找ecmascript v3的文档么?

xinchuang | 园豆:3 (初学一级) | 2012-01-13 08:48

o,w3school上的一段解释和您的差不多,但是他的例子中函数只有1个参数。我给忽略了。。

xinchuang | 园豆:3 (初学一级) | 2012-01-13 08:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册