String.replace()
首先感谢空空帮忙解决问题。
昨天在做 Demo 的时候,Html 模板去替换数据的时候遇到一个问题,简单描述下:
Code:
var str = '<ul><li>{Num1}</li><li>{Num2}</li><li>{Num3}</li></ul>',//template
data = [1012, 1210, 5210];//data
str = str.replace(/{Num(\d)}/g, data['$1']);
目的很简单,我就是想把字符串中的相关数字替换成我取到的数据中的真实数字,杯具的是此路不通,结果得到的是 undefine。于是问了空空,空空给的回复是用函数:
str = str.replace(/{Num(\d)}/g, function(nul, key) { return data[key - 1];});
当时我就震惊了,偶不知道后边的参数还可以用函数,out了。。。回家查了下犀牛书以及百度Google,略有所知。
第二个参数可以为字符串或者函数,当为函数的时候,它有 n+3 个参数,其中 n 为 () 的个数,第一个参数是匹配模式的字符串,中间的 n 个参数分别对应匹配到的各个 () ,第 n+2 个参数声明了匹配在 string 中出现的位置,最后一个参数是 string 自身。
例:
var str = 'i love jolin',
func = function(word) {
return word.substring(0, 1).toUpperCase() + word.substring(1);//将所有单词的第一个字母改为大写
};
console.log(str.replace(/\b\w+\b/g, func));
参考资料:
这篇文章发布于 2010年06月26日,星期六,18:07,归类于 编码。 您可以跟踪这篇文章的评论通过 RSS 2.0 feed。 您可以留下评论,或者从您的站点trackback。