为啥不推荐使用 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)org.apache.commonscommons-text1.4版本>

导入正确的包如下import org.apache.commons.text.StringEscapeUtils;

这个类中不再有这样的方法unescapeHtml(),而是它的两个 变化是可用的 unescapeHtml3() 和 unescapeHtml4() 使用 unescapeHtml3() 取消转义 Html 3.0 字符 使用 unescapeHtml4() 取消转义 Html 4.0 字符

【讨论】:

此库的最新版本 1.9 是的@VivekJain 你是对的,但在发布我的答案时它是 1.4

以上是关于为啥不推荐使用 org.apache.common.lang3 StringEscapeUtils?的主要内容,如果未能解决你的问题,请参考以下文章

Apache Commons IO之FileUtils的常用方法

org.apache.commons.lang3 jar的使用 ArrayUtils

为啥不推荐使用 (javax.servlet.)SingleThreadModel?

为啥 PoolingClientConnectionManager 中不推荐使用所有方法?

为啥不推荐使用 [DataMember(EmitDefaultValue = false)]?

为啥不推荐 HibernateDaoSupport?