//原始实现
function convertToJsEsc(chars) {
var result = '';
for(var i=0; i<chars.length; i++) {
var code = chars.charCodeAt(i);
switch (code) {
case 0x20: result += "\\s"; break;
case 0x22: result += "\\\""; break;
case 0x27: result += "\\\'"; break;
case 0x28: result += "\\("; break;
case 0x29: result += "\\)"; break;
case 0x2A: result += "\\*"; break;
case 0x2B: result += "\\+"; break;
case 0x2E: result += "\\."; break;
case 0x2F: result += "\\/"; break;
case 0x3F: result += "\\?"; break;
case 0x5B: result += "\\["; break;
case 0x5C: result += "\\\\"; break;
case 0x5D: result += "\\]"; break;
case 0x7B: result += "\\{"; break;
case 0x7D: result += "\\}"; break;
default:
if(code > 0x1F && code < 0x7F) { result += chars[i]; }
else { result += "\\u" + code.toString(16).toUpperCase(); }
break;
}
}
return result === "" ? "Nothing to convert" : result;
}
//我的修改
function convertToJsEsc(chars) {
return chars && chars.replace(
/([ "'\(\)\*\+\.\/\?\[\\\]\{\}])|([\x1F-\x7F])|(.)/g,
function(all, a, b, c){
return a ?
('\\' + (all==' '?'s':all)) :
b ?
all :
('\\u' + all.charCodeAt().toString(16).toUpperCase());
}
) || 'Nothing to convert';
}
有啥区别?
优点:方便修改
缺点:难于理解。
4 comments:
怎么感觉页面有点乱,难道是我浏览器的问题?
什么浏览器呢?
如果是 ie 的话,也许会有一些问题。
:)
请问一下下
这个生成器,要怎麼使用?
convertToJsEsc('a\\b/ [ ( + ) ] x.c')
就是转义特殊字符。
也许,
这个不太完善。
:)
Post a Comment