• Java转义工具类StringEscapeUtils的学习笔记


    Java转义工具类StringEscapeUtils的学习笔记

    前言

    ​ 在java.commons.lang3 的包中有许多方便好用的工具类,类似于处理字符串的StringUtils,处理日期的DateUtil等等,StringEscapeUtils也是其中的一员。

    ​ StringEscapeUtils 是在java.commons.lang3的2.0 版本中加入的工具类,在3.6版本中被标注为@deprecated,表明在之后的版本中则为过时状态,之后StringEscapeUtils类被移到java.commons.text包下。

    依赖

            <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-text -->
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-text</artifactId>
                <version>1.8</version>
            </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    功能用途

    StringEscapeUtils的主要功能就是为Java,Java Script,Html,XML进行转义与反转义。

    • escapeJava(String input) / unescapeJava(String unionCodeString) 将输入字符串转为unicode编码 / 将 unicode字符串转为utf-8 格式的字符串
    • escapeHtml4(String input) / unescapeHtml4(String input) 转义/反转义html脚本
    • escapeEcmaScript(String input) / unescapeEcmaScript(String input) 转义/反转义js脚本
    • escapeXml(String input) / unescapeXml(String input) 转义/反转义xml脚本

    除了列出的几个较常用的方法,还有escapeJson(String input) / unescapeJson(String input)、escapeCsv(String input) / unescapeCsv(String input) 等等。

    示例

    执行例子如下:

    import org.apache.commons.text.StringEscapeUtils;
    import org.junit.Test;
    
    /**
     * @author liuqian
     * @date 2018/4/3 16:27
     */
    public class EscapeTest {
    
      @Test
      public void escapeTest() {
            System.out.println("转义/反转义Java字符串");
            String javaString = "\"这是Java\":\"字符串\"";
            System.out.println("原字符串: " + javaString);
            System.out.print("转义后:");
            System.out.println(StringEscapeUtils.escapeJava(javaString));
            System.out.print("反转义后:");
            System.out.println(StringEscapeUtils.unescapeJava(StringEscapeUtils.escapeJava(javaString)));
            System.out.println(StringEscapeUtils.unescapeJson(StringEscapeUtils.escapeJava(javaString)));
            System.out.println(StringEscapeUtils.unescapeJava(StringEscapeUtils.escapeJson(javaString)));
            System.out.println("-------------------------------------------------------------");
            System.out.println("转义/反转义Json字符串");
            String jsonString = "{\"keyword\": \"这是Json字符串\"}";
            System.out.println("原字符串: " + jsonString);
            System.out.print("转义后:");
            System.out.println(StringEscapeUtils.escapeJson(jsonString));
            System.out.print("反转义后:");
            System.out.println(StringEscapeUtils.unescapeJson(StringEscapeUtils.escapeJson(jsonString)));
            System.out.println("-------------------------------------------------------------");
            //除了html4还有html3等格式
            System.out.println("转义/反转义Html字符串");
            String htmlString = "加粗字符";
            System.out.println("原字符串: " + htmlString);
            System.out.print("转义后:");
            System.out.println(StringEscapeUtils.escapeHtml4(htmlString));
            System.out.print("反转义后:");
            System.out.println(StringEscapeUtils.unescapeHtml4(StringEscapeUtils.escapeHtml4(htmlString)));
            System.out.println("-------------------------------------------------------------");
            //除了xml10还有xml11等格式
            System.out.println("转义/反转义xml字符串");
            String xmlString = "\"xml字符串\"";
            System.out.println("原字符串: " + xmlString);
            System.out.print("转义后:");
            System.out.println(StringEscapeUtils.escapeXml10(xmlString));
            System.out.print("反转义后:");
            System.out.println(StringEscapeUtils.unescapeXml(StringEscapeUtils.escapeXml10(xmlString)));
            System.out.println("-------------------------------------------------------------");
            System.out.println("转义/反转义csv字符串");
            String csvString = "1997,Ford,E350,\"Super, luxurious truck\"";
            System.out.println("原字符串: " + csvString);
            System.out.print("转义后:");
            System.out.println(StringEscapeUtils.escapeCsv(csvString));
            System.out.print("反转义后:");
            System.out.println(StringEscapeUtils.unescapeCsv(StringEscapeUtils.escapeCsv(csvString)));
            System.out.println("-------------------------------------------------------------");
            System.out.println("转义/反转义Java Script字符串");
            String jsString = "";
            System.out.println("原字符串: " + jsString);
            System.out.print("转义后:");
            System.out.println(StringEscapeUtils.escapeEcmaScript(jsString));
            System.out.print("反转义后:");
            System.out.println(StringEscapeUtils.unescapeEcmaScript(StringEscapeUtils.escapeEcmaScript(jsString)));
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64

    运行结果如下:

    转义/反转义Java字符串
    原字符串: "这是Java":"字符串"
    转义后:\"\u8FD9\u662FJava\":\"\u5B57\u7B26\u4E32\"
    反转义后:"这是Java":"字符串"
    "这是Java":"字符串"
    "这是Java":"字符串"
    -------------------------------------------------------------
    转义/反转义Json字符串
    原字符串: {"keyword": "这是Json字符串"}
    转义后:{\"keyword\": \"\u8FD9\u662FJson\u5B57\u7B26\u4E32\"}
    反转义后:{"keyword": "这是Json字符串"}
    -------------------------------------------------------------
    转义/反转义Html字符串
    原字符串: <strong>加粗字符</strong>
    转义后:&lt;strong&gt;加粗字符&lt;/strong&gt;
    反转义后:<strong>加粗字符</strong>
    -------------------------------------------------------------
    转义/反转义xml字符串
    原字符串: <xml>"xml字符串"</xml>
    转义后:&lt;xml&gt;&quot;xml字符串&quot;&lt;/xml&gt;
    反转义后:<xml>"xml字符串"</xml>
    -------------------------------------------------------------
    转义/反转义csv字符串
    原字符串: 1997,Ford,E350,"Super, luxurious truck"
    转义后:"1997,Ford,E350,""Super, luxurious truck"""
    反转义后:1997,Ford,E350,"Super, luxurious truck"
    -------------------------------------------------------------
    转义/反转义Java Script字符串
    原字符串: <script>alert('1111')</script>
    转义后:<script>alert(\'1111\')<\/script>
    反转义后:<script>alert('1111')</script>
    
    Process finished with exit code 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
  • 相关阅读:
    编译原理期末复习
    关于在代码中vector的一些使用
    linux高级篇基础理论四(rsync,inotify,squid,KVM虚拟机)
    STM32按键消抖——入门状态机思维
    SG Former论文学习笔记
    三、Eureka
    python 从二进制文件中读取浮点数据
    QT使用前的知识
    如何在 Nginx 中隐藏版本号
    MomentJs 常用api
  • 原文地址:https://blog.csdn.net/weixin_45866849/article/details/126698077