String特殊字符工具类-StringEscapeUtil


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

public class StringEscapeUtil {
    /**
     * HTML字符转义
     * @see 对输入参数中的敏感字符进行过滤替换,防止用户利用JavaScript等方式输入恶意代码
     * @see String input = 
     * @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("&", "&");
        input = input.replaceAll("<", "<");
        input = input.replaceAll(">", ">");
        input = input.replaceAll(" ", " ");
        input = input.replaceAll("'", "'");   //IE暂不支持单引号的实体名称,而支持单引号的实体编号,故单引号转义成实体编号,其它字符转义成实体名称
        input = input.replaceAll("\"", """); //双引号也需要转义,所以加一个斜线对其进行转义
        input = input.replaceAll("\n", "
"); //不能把\n的过滤放在前面,因为还要对<和>过滤,这样就会导致
失效了
return input; } public static String unHtmlEscape(String input) { if(StringCheckUtil.isEmpty(input)){ return input; } input = input.replaceAll("&", "&"); input = input.replaceAll("<", "<"); input = input.replaceAll(">", ">"); input = input.replaceAll(" ", " "); input = input.replaceAll("'", "'"); //IE暂不支持单引号的实体名称,而支持单引号的实体编号,故单引号转义成实体编号,其它字符转义成实体名称 input = input.replaceAll(""", "\""); //双引号也需要转义,所以加一个斜线对其进行转义 input = input.replaceAll("
", "\n"); //不能把\n的过滤放在前面,因为还要对<和>过滤,这样就会导致
失效了
return input; } }

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

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