apache的转义工具类StringEscapeUtils

java中转义是指:将某些特殊字符转换为它在特定场景中原来的意义。

转义字符是指无法直接显示的字符。

常见的场景是:

  • 同一字符在不同编码中表达形式不一样。
  • 某些特定的字符在不同环境、不同语言中表达形式不一样。

其中org.apache.commons.lang.StringEscapeUtils已废弃,可以使用org.apache.commons.text.StringEscapeUtils替代。

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-text</artifactId>
    <version>1.6</version>
</dependency>

转义Unicode编码

//转义为Unicode编码
String escape = StringEscapeUtils.escapeJava("古德猫宁");
//输出:\u53E4\u5FB7\u732B\u5B81
//反转义Unicode编码
String unescape = StringEscapeUtils.unescapeJava("\u53E4\u5FB7\u732B\u5B81");
//输出:古德猫宁

转义html脚本

//转义为html脚本
String escapeHtml = StringEscapeUtils.escapeHtml4("<div>Hello World!</div>");
System.out.println(escapeHtml);
//输出:&lt;div&gt;Hello World!&lt;/div&gt;
//反转义html脚本
String unescapeHtml = StringEscapeUtils.unescapeHtml4("&lt;div&gt;Hello World!&lt;/div&gt;");
System.out.println(unescapeHtml);
//输出:<div>Hello World!</div>

转义JS脚本

//转义JS脚本
String escapeJS = StringEscapeUtils.escapeEcmaScript("<script type=\"text/javascript\">alert('哈哈')<script>");
System.out.println(escapeJS);
//输出:<script type=\"text\/javascript\">alert(\'\u54C8\u54C8\')<script>
//反转义JS脚本
String unescapeJS = StringEscapeUtils.unescapeEcmaScript("<script>alert(\'哈哈\')<script>");
System.out.println(unescapeJS);
//输出:<script>alert('哈哈')<script>

转义CSV

String escapeCsv = StringEscapeUtils.escapeCsv("He said \"'I love you'\"");
System.out.println(escapeCsv);
//输出:"He said ""'I love you'"""
String unescapeCsv = StringEscapeUtils.unescapeCsv("\"He said \"\"'I love you'\"\"\"");
System.out.println(unescapeCsv);
//输出:He said "'I love you'

转义XML

//转义xml脚本
String escapeXml = StringEscapeUtils.escapeXml11("<port>8080</port>");
System.out.println(escapeXml);
//输出:&lt;port&gt;8080&lt;/port&gt;
//反转义xml脚本
String unescapeXml = StringEscapeUtils.unescapeXml("&lt;port&gt;8080&lt;/port&gt;");
System.out.println(unescapeXml);
//输出:<port>8080</port>

 

posted @   残城碎梦  阅读(1456)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2021-11-29 请你谈谈关于IO同步、异步、阻塞、非阻塞的区别
2021-11-29 为什么需要消息队列?使用消息队列有什么好处?
2021-11-29 你能说说Java中Comparable和Comparator的区别吗
点击右上角即可分享
微信分享提示