频道栏目
首页 > 资讯 > JavaScript > 正文

JavaScript框架封装之JavaScript中的文本字符串的转义和反转义的实现讲解

18-07-21        来源:[db:作者]  
收藏   我要投稿

如果是想把本地的一个字符串串存到服务器,再次取出来的还是文本的话,就需要这个文本字符串的转义;

 /**
     * 对一个字符串的转义
     * @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);  // &ltp&gt&ltb&gt123&456&lt/b&gt&lt/p&gt&amp
 
    // 如果把一个字符串转义为实体之后,就不会正常在页面中显示出来内容,只会显示的是一个字符串
    document.body.innerHTML = res;  // 会显示的是一个字符串,&ltp&gt&ltb&gt123&456&lt/b&gt&lt/p&gt&amp, 但是浏览器也会自动将实体转换解析
 
    // 如果是一个字符串的话,就会直接在网页中显示出来(按照HTML进行解析)
    document.body.innerHTML = tagText;  // 相当是设置了一段HTML代码
 
    // 对字符反转义之后的结果
    res = unscapeHTML(res);  // <p><b>123&456</b></p>
    console.log(res);           // 又恢复到最初始的状态
相关TAG标签
上一篇:如何使用Eclipse配置Maven
下一篇:idea 使用Git工具创建分支、合并分支等操作实例讲解
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站