基于JavaScript实现的轻量级字符串占位符替换函数
2009-02-25 21:32
344 查看
基于JavaScript实现的轻量级字符串占位符替换函数,占位符支持嵌套表达式,代码如下:
/*
* 占位符替换函数。占位符支持嵌套表达式,如a.b.c
* str:字串模板
* prefix:占位符前缀
* surfix:占位符后缀
* obj:数据对象
*/
function replaceHolder(str,prefix,surfix,obj){
var ret = '';
var p1=0,p2=0;
while(true){
p1 = str.indexOf(prefix,p2);
if(p1==-1) break;
if(p1>p2) ret+=str.substring(p2,p1);
p2 = str.indexOf(surfix,p1+prefix.length);
if(p2==-1) break;
var holder = str.substring(p1+prefix.length,p2);
var nests = holder.split('.');
var val = obj;
for(var i=0;i<nests.length;i++){
try{
val = val[nests[i]];
}catch(E){
alert("非法的属性表达式:"+holder);
}
}
if(typeof(val)=='undefined')
ret+=prefix+holder+surfix;
else
ret+=val;
p2=p2+surfix.length;
}
if(p1==-1)
ret+=str.substring(p2,str.length);
else if(p2==-1)
ret+=str.substring(p1,str.length);
return ret;
}
以下是测试代码:
var a='#net.ax#-我的-#holder#-YY';
document.write(replaceHolder(a,'#','#',{holder:'测试',net:{ax:"嵌套属性"}}));
输出结果为:嵌套属性-我的-测试-YY
/*
* 占位符替换函数。占位符支持嵌套表达式,如a.b.c
* str:字串模板
* prefix:占位符前缀
* surfix:占位符后缀
* obj:数据对象
*/
function replaceHolder(str,prefix,surfix,obj){
var ret = '';
var p1=0,p2=0;
while(true){
p1 = str.indexOf(prefix,p2);
if(p1==-1) break;
if(p1>p2) ret+=str.substring(p2,p1);
p2 = str.indexOf(surfix,p1+prefix.length);
if(p2==-1) break;
var holder = str.substring(p1+prefix.length,p2);
var nests = holder.split('.');
var val = obj;
for(var i=0;i<nests.length;i++){
try{
val = val[nests[i]];
}catch(E){
alert("非法的属性表达式:"+holder);
}
}
if(typeof(val)=='undefined')
ret+=prefix+holder+surfix;
else
ret+=val;
p2=p2+surfix.length;
}
if(p1==-1)
ret+=str.substring(p2,str.length);
else if(p2==-1)
ret+=str.substring(p1,str.length);
return ret;
}
以下是测试代码:
var a='#net.ax#-我的-#holder#-YY';
document.write(replaceHolder(a,'#','#',{holder:'测试',net:{ax:"嵌套属性"}}));
输出结果为:嵌套属性-我的-测试-YY
相关文章推荐
- JavaScript基于replace+正则实现ES6的字符串模版功能
- JavaScript基于扩展String实现替换字符串中index处字符的方法
- 基于JavaScript实现手机短信按钮倒计时(超简单)
- javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
- 使用 HTML5, javascript, webrtc, websockets, Jetty 和 OpenCV 实现基于 Web 的人脸识别
- 基于JavaScript实现的插入排序算法分析
- 基于JavaScript实现购物车功能
- 利用C#动态编译功能实现像Javascript中的Eval的功能来将一段字符串进行数学运算
- 基于JavaScript实现百叶窗动画效果不只单纯flas可以实现
- java实现面向对象和javaScript基于对象的区别&java垃圾回收机制和其他编程语言的比较
- 基于javascript实现按圆形排列DIV元素(一)
- 基于javascript实现按圆形排列DIV元素(二)
- 基于javascript实现的快速排序
- Java基于动态规划法实现求最长公共子序列及最长公共子字符串示例
- 基于javascript实现全国省市二级联动下拉选择菜单
- JavaScript实现字符串与日期的互相转换及日期的格式化
- 用JavaScript实现字符串切分功能
- Razor.js,基于JavaScript的Razor实现
- 基于javascript实现文字无缝滚动效果
- 英文字符串第一个字符大写C#和Javascript两种实现方法