JavaScript框架封装之JavaScript中的文本字符串的转义和反转义的实现讲解
程序员文章站
2022-10-27 16:29:08
如果是想把本地的一个字符串串存到服务器,再次取出来的还是文本的话,就需要这个文本字符串的转义;
/**
* 对一个字符串的转义
* @param str
*...
如果是想把本地的一个字符串串存到服务器,再次取出来的还是文本的话,就需要这个文本字符串的转义;
/** * 对一个字符串的转义 * @param str * @return {*} */ function escapehtml(str) { return str.replace(/$/g, '&') // 结尾的字符用&替换 .replace(/\/g, '>') // > 用>替换 .replace(/\'/g, ''') // ' 用'替换 .replace(/\"/g, '"'); // " 用"替换 } /** * 对一个字符串的反转义 * @param str * @return {*} */ function unscapehtml(str) { // 查找所有的< > & " ' 字符,并替换掉 return str.replace(/</g, '<') .replace(/>/g, '>') .replace(/'/g, '\'') .replace(/"/g, '\"') .replace(/&/g, '') // string.fromcharcode() 静态方法根据指定的 unicode 编码中的序号值来返回一个字符串。string.fromcharcode(65,66,67) “abc” .replace(/&#(\d+)/g, function ($0, $1) { //parseint() 函数将给定的字符串以指定基数(radix/base)解析成为整数。就是 你想把string当成radix进制数解析成10进制 return string.fromcharcode(parseint($1, 10)); }); }
测试代码如下:
// 转义和反转义的功能测试 var tagtext = "<p><b>123&456</b></p>"; // 如果直接打印输出的话,就是一个字符串 console.log(tagtext); // <p><b>123&456</b></p> res = escapehtml(tagtext); console.log(res); // <p><b>123&456</b></p>& // 如果把一个字符串转义为实体之后,就不会正常在页面中显示出来内容,只会显示的是一个字符串 document.body.innerhtml = res; // 会显示的是一个字符串,<p><b>123&456</b></p>&, 但是浏览器也会自动将实体转换解析 // 如果是一个字符串的话,就会直接在网页中显示出来(按照html进行解析) document.body.innerhtml = tagtext; // 相当是设置了一段html代码 // 对字符反转义之后的结果 res = unscapehtml(res); // <p><b>123&456</b></p> console.log(res); // 又恢复到最初始的状态