var str = "select * from table_name where id = :id and name = :name"; var data = { id: "123", name: "小二" }; for (var n in data) str = str.replace(":"+n,"'"+data[n]+"'"); alert(str);
var str='select * from table_name where id = :id and name = :name'; var obj={ id :'123', name : '小二' }; function xx(str,obj){ for(var i in obj){ if(obj.hasOwnProperty(i)){ var reg=new RegExp(':'+i,'g'); str=str.replace(reg,"'"+obj[i]+"'"); } } return str; } var d=xx(str,obj); d
alert('select * from table_name where id = :id and name = :name'.replace(/:id/,123).replace(/:name/,'小二'));
var format = function(tpl, data){ return tpl.replace(/\:(\w+)(\s+|$)/g, function(a, b, c){ b = b && data[b]; if(b && b.constructor == String) return "'" + b + "'" + c; //这里可以根据自己的需求增加逻辑判断,主要是值类型 return b + c; }); }; alert(format("select * from table_name where id = :id and name = :name", {id:123, name:'123'})); alert(format("select * from table_name where id = :id and name = :name and no = :no", {id:123, name:'123', no:'abc'}));
s = 'select * from table_name where id = :id and name = :name'; id = 123; name = "小二";s = s.replace(/:(\w+)/g, function(a, b) { try { return "'" + eval(b) + "'"; } catch(e) { return a; } }); alert(s);
for in 存在效率问题var str = "select * from table_name where id = :id and name = :name"; var data = { id: "123", name: "小二" }, hash = [ "id" , "name" ]; for (var i = hash.length; i--; ) str = str.replace(":"+hash[ i ] ,"'"+data[ hash[ i ] ]+"'"); alert(str);如果逻辑一直 2个replace搞定吧
s = 'select * from table_name where id = :id and name = :name'; id = 123; name = "小二"; s = s.replace(/:[a-z]+\b/g, function(a) { return window[a.substring(1)] ? "'"+window[a.substring(1)]+"'" : a}); alert(s);
var obj={
id :'123',
name : '小二'
};
function xx(str,obj){
for(var i in obj){
if(obj.hasOwnProperty(i)){
var reg=new RegExp(':'+i,'g');
str=str.replace(reg,"'"+obj[i]+"'");
}
}
return str;
}
var d=xx(str,obj);
d
var format = function(tpl, data){
return tpl.replace(/\:(\w+)(\s+|$)/g, function(a, b, c){
b = b && data[b];
if(b && b.constructor == String) return "'" + b + "'" + c;
//这里可以根据自己的需求增加逻辑判断,主要是值类型
return b + c;
});
};
alert(format("select * from table_name where id = :id and name = :name", {id:123, name:'123'}));
alert(format("select * from table_name where id = :id and name = :name and no = :no", {id:123, name:'123', no:'abc'}));
id = 123;
name = "小二";s = s.replace(/:(\w+)/g, function(a, b) {
try {
return "'" + eval(b) + "'";
} catch(e) {
return a;
}
});
alert(s);
看到这个回复,突发灵感,终于知道for in的实际用处。以前总感觉for in是循环对象的属性,不能像java中的foreach那样好用,看到这个回复,感觉这样也很好用!给你32个赞!
var data = {
id: "123",
name: "小二"
},
hash = [ "id" , "name" ];
for (var i = hash.length; i--; )
str = str.replace(":"+hash[ i ] ,"'"+data[ hash[ i ] ]+"'");
alert(str);如果逻辑一直 2个replace搞定吧
id = 123;
name = "小二";
s = s.replace(/:[a-z]+\b/g, function(a) { return window[a.substring(1)] ? "'"+window[a.substring(1)]+"'" : a});
alert(s);