ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

String特殊字符工具类-StringEscapeUtil

2022-02-03 19:03:48  阅读:215  来源: 互联网

标签:String 转义 see replaceAll htmlEscape input StringEscapeUtil 特殊字符


============================================================================String特殊字符工具类:

public class StringEscapeUtil {
    /**
     * HTML字符转义
     * @see 对输入参数中的敏感字符进行过滤替换,防止用户利用JavaScript等方式输入恶意代码
     * @see String input = <img src='http://t1.baidu.com/it/fm=0&gp=0.jpg'/>
     * @see HtmlUtils.htmlEscape(input);         //from spring.jar
     * @see StringEscapeUtils.escapeHtml(input); //from commons-lang.jar
     * @see 尽管Spring和Apache都提供了字符转义的方法,但Apache的StringEscapeUtils功能要更强大一些
     * @see StringEscapeUtils提供了对HTML,Java,JavaScript,SQL,XML等字符的转义和反转义
     * @see 但二者在转义HTML字符时,都不会对单引号和空格进行转义,而本方法则提供了对它们的转义
     * @return String 过滤后的字符串
     */
    public static String htmlEscape(String input) {
        if(StringCheckUtil.isEmpty(input)){
            return input;
        }
        input = input.replaceAll("&", "&amp;");
        input = input.replaceAll("<", "&lt;");
        input = input.replaceAll(">", "&gt;");
        input = input.replaceAll(" ", "&nbsp;");
        input = input.replaceAll("'", "&#39;");   //IE暂不支持单引号的实体名称,而支持单引号的实体编号,故单引号转义成实体编号,其它字符转义成实体名称
        input = input.replaceAll("\"", "&quot;"); //双引号也需要转义,所以加一个斜线对其进行转义
        input = input.replaceAll("\n", "<br/>");  //不能把\n的过滤放在前面,因为还要对<和>过滤,这样就会导致<br/>失效了
        return input;
    }
    
    public static String unHtmlEscape(String input) {
        if(StringCheckUtil.isEmpty(input)){
            return input;
        }
        input = input.replaceAll("&amp;", "&");
        input = input.replaceAll("&lt;", "<");
        input = input.replaceAll("&gt;", ">");
        input = input.replaceAll("&nbsp;", " ");
        input = input.replaceAll("&#39;", "'");   //IE暂不支持单引号的实体名称,而支持单引号的实体编号,故单引号转义成实体编号,其它字符转义成实体名称
        input = input.replaceAll("&quot;", "\""); //双引号也需要转义,所以加一个斜线对其进行转义
        input = input.replaceAll("<br/>", "\n");  //不能把\n的过滤放在前面,因为还要对<和>过滤,这样就会导致<br/>失效了
        return input;
    }
}

 

============================================================================String特殊字符工具测试类:

    /**
     * html转义
     */
    @Test
    public void test_htmlEscape() {
        String input = "<a href='index.html'>主页<a>";
        String htmlEscape = StringEscapeUtil.htmlEscape(input);
        System.out.println(htmlEscape);
        String unHtmlEscape = StringEscapeUtil.unHtmlEscape(htmlEscape);
        System.out.println(unHtmlEscape);
    }

 

标签:String,转义,see,replaceAll,htmlEscape,input,StringEscapeUtil,特殊字符
来源: https://www.cnblogs.com/taoxw/p/15861819.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有