<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Document</title>
</head>
<body>
<script>
let tep="我的分数 {{}} ,你的分数 {{}}"
String.prototype.replaceAll=function(reg,fun){
let i=-1
return this.replace(reg,function(){
i++;
return fun(arguments,i);
/*
arguments为数组
arguments[0]表示匹配到的字符,
arguments[1]表示匹配到的字符最小索引位置(RegExp.index),
arguments[2]表示被匹配的字符串(RegExp.input)
/
});
};
let b=tep.replaceAll(/{{}}/g,function(_arg,index){
if(index === 0){
return "123456"
}else{
return "654321"
}
});
// console.log(b)
</script>
<script>
String.prototype.replaceData=function(data){
let reg=/(${)+(\s)+(\w+)+(\s)+(})/g;
var startLen=2; //${ name }中起始位置"${"的长度
var endLen=1; // ${ name }中结束位置"}"的长度
// let reg=/name/gi
return this.replace(reg,function(){
let str=arguments[0].replace(/(\s)/g,"");
let len=str.length;
if(len>startLen+endLen){
str=str.substring(startLen,len-endLen);
}else{
console.log(arguments[0]+"中key不允许为空")
};
if(data.hasOwnProperty(str)){
return data[str] ? data[str] : "";
}else{
console.error("data没有包含"+str+"这个属性值")
return "";
};
});
};
var tep2="我叫${ name },性别${ sex },今年${ age }岁,年级是${ grade },a这个属性没有的时候${a}}"
let b2=tep2.replaceData(
{
"name":"李白",
"age":500,
"grade":"小学一年级",
"sex":null
}
);
console.log(b2)
</script>
</body>
</html>
网友评论