之前遇到一个问题:后台传了一个公式#{unitprice}*#{duration}*#{acreage}到前台去,但是我在前台要显示的是unitprice*duration*acreage,一开始是想办法把#{unitprice}*#{duration}*#{acreage}中的单词和运算符号切割出来再拼接,但是觉得太麻烦,后来查到一个js中的替换方法replace,W3School官网的解释如下:
replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
stringObject.replace(regexp/substr,replacement)
参数 描述 regexp/substr 必需。规定子字符串或要替换的模式的 RegExp 对象。
请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。
replacement 必需。一个字符串值。规定了替换文本或生成替换文本的函数。 返回值:
一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。
说明:
字符串 stringObject 的 replace() 方法执行的是查找并替换的操作。它将在 stringObject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。replacement 可以是字符串,也可以是函数。如果它是字符串,那么每个匹配都将由字符串替换。
如上所述,我想要实现我的功能其实可以把#{unitprice}*#{duration}*#{acreage}中的'#{'和'}'都匹配替换成""就行了,so代码如下:
{ data: "formula",render:function(data){ var str = data.replace(/#{|}/g,""); return str; }},
这样就能实现去除'#{'和'}'的目的,/#{|}/g是一个正则表达式,用来全局匹配data中的'#{'和'}',如果不加g,则只能匹配开头的第一次,结果就会被成unitprice}*#{duration}*#{acreage}了,记录一下。