Apache Commons Text 库简介
1. 概述
简单地说,Apache Commons Text 库包含许多有用的实用程序方法来处理字符串,超出了核心 Java 提供的方法。
在这个快速介绍中,我们将看到Apache Commons Text是什么,它的用途,以及使用库的一些实际示例。
2. Maven 依赖
让我们首先将以下 Maven 依赖项添加到我们的pom.xml:
org.apache.commons commons-text 1.10
Copy
您可以在Maven 中央存储库中找到最新版本的库。
3. 概述
根包org.apache.commons.text分为不同的子包:
- org.apache.commons.text.diff– 字符串之间的差异
- org.apache.commons.text.similarity–字符串之间的相似性和距离
- org.apache.commons.text.translate–翻译文本
让我们更详细地看看每个包的用途。
3. 处理文本
org.apache.commons.text包包含多个用于处理字符串的工具。
例如,WordUtils具有能够将字符串中每个单词的首字母大写,交换字符串的大小写以及检查字符串是否包含给定数组中的所有单词的API。
让我们看看如何将字符串中每个单词的首字母大写:
@Testpublic void whenCapitalized_thenCorrect() { String toBeCapitalized = "to be capitalized!"; String result = WordUtils.capitalize(toBeCapitalized); assertEquals("To Be Capitalized!", result);}
Copy
以下是我们如何检查字符串是否包含数组中的所有单词:
@Testpublic void whenContainsWords_thenCorrect() { boolean containsWords = WordUtils .containsAllWords("String to search", "to", "search"); assertTrue(containsWords);}
Copy
StrSubstitutor提供了一种从模板构建字符串的便捷方法:
@Testpublic void whenSubstituted_thenCorrect() { Map substitutes = new HashMap<>(); substitutes.put("name", "John"); substitutes.put("college", "University of Stanford"); String templateString = "My name is ${name} and I am a student at the ${college}."; StrSubstitutor sub = new StrSubstitutor(substitutes); String result = sub.replace(templateString); assertEquals("My name is John and I am a student at the University of Stanford.", result);}
Copy
StrBuilder是Java.lang.StringBuilder的替代品。它提供了一些StringBuilder没有提供的新功能。
例如,我们可以替换另一个字符串中出现的所有字符串,或者清除字符串而不为其引用分配新对象。
下面是替换部分字符串的快速示例:
@Testpublic void whenReplaced_thenCorrect() { StrBuilder strBuilder = new StrBuilder("example StrBuilder!"); strBuilder.replaceAll("example", "new"); assertEquals(new StrBuilder("new StrBuilder!"), strBuilder);}
Copy
要清除字符串,我们可以通过在构建器上调用clear() 方法来做到这一点:
strBuilder.clear();
Copy
4. 计算字符串之间的差异
包org.apache.commons.text.diff实现了Myers算法,用于计算两个字符串之间的差异。
两个字符串之间的差异由一系列修改定义,这些修改可以将一个字符串转换为另一个字符串。
有三种类型的命令可用于将字符串转换为另一个字符串- InsertCommand,KeepCommand和DeleteCommand。
EditScript对象保存应运行的脚本,以便将字符串转换为另一个字符串。让我们计算一下为了将一个字符串转换为另一个字符串而应该进行的单字符修改的数量:
@Testpublic void whenEditScript_thenCorrect() { StringsComparator cmp = new StringsComparator("ABCFGH", "BCDEFG"); EditScript script = cmp.getScript(); int mod = script.getModifications(); assertEquals(4, mod);}
Copy
5.字符串之间的相似性和距离
org.apache.commons.text.similarity包包含可用于查找字符串之间的相似性和距离的算法。
例如,LongestCommonSubsequence可用于查找两个字符串中常用字符的数量:
@Testpublic void whenCompare_thenCorrect() { LongestCommonSubsequence lcs = new LongestCommonSubsequence(); int countLcs = lcs.apply("New York", "New Hampshire"); assertEquals(5, countLcs);}
Copy
类似地,LongestCommonSubsequenceDistance可以用来查找两个字符串中不同字符的数量:
@Testpublic void whenCalculateDistance_thenCorrect() { LongestCommonSubsequenceDistance lcsd = new LongestCommonSubsequenceDistance(); int countLcsd = lcsd.apply("New York", "New Hampshire"); assertEquals(11, countLcsd);}
Copy
6. 文本翻译
org.apache.text.translate包最初是为了允许我们自定义StringEscapeUtils 提供的规则而创建的。
该包有一组类,负责将文本转换为一些不同的字符编码模型,如 Unicode 和数字字符引用。我们还可以创建自己的定制翻译程序。
让我们看看如何将字符串转换为其等效的 Unicode 文本:
@Testpublic void whenTranslate_thenCorrect() { UnicodeEscaper ue = UnicodeEscaper.above(0); String result = ue.translate("ABCD"); assertEquals("\\u0041\\u0042\\u0043\\u0044", result);}
Copy
在这里,我们将要开始翻译的字符的索引传递给above() 方法。
LookupTranslator使我们能够定义自己的查找表,其中每个字符都可以具有相应的值,并且可以将任何文本转换为相应的等效值。
7. 结论
在这个快速教程中,我们已经看到了Apache Commons Text的全部内容及其一些常见功能的概述。
代码示例可以在GitHub 上找到。
来源地址:https://blog.csdn.net/allway2/article/details/127883581
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341