为啥不推荐使用 org.apache.common.lang3 StringEscapeUtils?
Posted
技术标签:
【中文标题】为啥不推荐使用 org.apache.common.lang3 StringEscapeUtils?【英文标题】:Why was org.apache.common.lang3 StringEscapeUtils deprecated?为什么不推荐使用 org.apache.common.lang3 StringEscapeUtils? 【发布时间】:2018-05-28 18:52:36 【问题描述】:我找不到任何解释为什么 StringEscapeUtils 从 Apache Lang3 v3.7 中被弃用。
https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringEscapeUtils.html
我们现在应该使用什么来进行 HTML 转义/取消转义
【问题讨论】:
就在您发布的链接中:Deprecated. as of 3.6, use commons-text StringEscapeUtils instead
【参考方案1】:
该类已从包中移出
org.apache.commons.
lang3
到
org.apache.commons.文本
您可以轻松替换已弃用的库:
在你的 build.gradle 中:
implementation 'org.apache.commons:commons-text:1.9'
在你的班级中使用StringEscapeUtils
确保你导入了正确的班级:
import org.apache.commons.text.StringEscapeUtils;
1.9 目前是最新版本(最后一次检查是 2021 年 2 月 24 日),但您可以在 maven 上查看版本: https://mvnrepository.com/artifact/org.apache.commons/commons-text
【讨论】:
@user3871754 不,它在 org.apache.commons.lang3 中已被弃用,因为它在 org.apache.commons.text 中被采用,您可以在此处阅读:commons.apache.org/proper/commons-text/javadocs/api-release/…(它明确指出“此代码已改编自 Apache Commons Lang 3.5。”)【参考方案2】:根据deprecation listing,它被移到了一个新项目——commons-text
【讨论】:
【参考方案3】:来自Commons-lang 3.6 release notes:
Apache Commons 社区最近设置了 Commons Text 组件 作为处理字符串的算法的家。由于这个原因,大多数字符串 Commons Lang 中的重点功能已被弃用并移至 公共文本。这包括:
o org.apache.commons.lang3.text 和 org.apache.commons.lang3.text.translate 包 o org.apache.commons.lang3.StringEscapeUtils o org.apache.commons.lang3.RandomStringUtils o 方法 org.apache.commons.lang3.StringUtils.getJaroWinklerDistance 和 org.apache.commons.lang3.StringUtils.getLevenshteinDistance
有关更多信息,请参阅 Commons Text 网站:
http://commons.apache.org/text
【讨论】:
【参考方案4】:执行以下步骤
将以下依赖项添加到您的 pom.xml(如果使用 maven)
导入正确的包如下import org.apache.commons.text.StringEscapeUtils;
这个类中不再有这样的方法unescapeHtml(),而是它的两个 变化是可用的 unescapeHtml3() 和 unescapeHtml4() 使用 unescapeHtml3() 取消转义 Html 3.0 字符 使用 unescapeHtml4() 取消转义 Html 4.0 字符【讨论】:
此库的最新版本以上是关于为啥不推荐使用 org.apache.common.lang3 StringEscapeUtils?的主要内容,如果未能解决你的问题,请参考以下文章
Apache Commons IO之FileUtils的常用方法
org.apache.commons.lang3 jar的使用 ArrayUtils
为啥不推荐使用 (javax.servlet.)SingleThreadModel?
为啥 PoolingClientConnectionManager 中不推荐使用所有方法?