本文介绍: 该包有一组类,负责文本转换为一些不同字符编码模型,如 Unicode数字字符引用。在这个快速介绍中,我们看到Apache Commons Text什么,它的用途,以及使用库的一些实际示例。在这个快速教程中,我们已经看到了Apache Commons Text的全部内容及其一些常见功能概述。使我们能够定义自己查找表,其中每个字符可以具有相应的值,并且可以将任何文本转换为相应的等效值。具有能够将字符串每个单词首字母大写交换字符串的大小写。在这里我们将要开始翻译字符索引传递给。

简单地说,Apache Commons Text包含许多有用的实用程序方法处理字符超出核心 Java 提供的方法

在这个快速介绍中,我们看到Apache Commons Text什么,它的用途,以及使用库的一些实际示例

我们首先将以下 Maven 依赖添加我们pom.xml

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

您可以在Maven 中央存储库中找到最新版本的库。

根包org.apache.commons.text分为不同的子包:

让我们更详细地看看每个包的用途。

org.apache.commons.text包含多个用于处理字符串的工具

例如WordUtils具有能够将字符串中每个单词首字母大写交换字符串的大小写以及检查字符串是否包含给定数组中的所有单词的API。

让我们看看如何将字符串中每个单词的首字母大写

@Test
public void whenCapitalized_thenCorrect() {
    String toBeCapitalized = "to be capitalized!";
    String result = WordUtils.capitalize(toBeCapitalized);
    
    assertEquals("To Be Capitalized!", result);
}Copy

以下是我们如何检查字符串是否包含数组中的所有单词:

@Test
public void whenContainsWords_thenCorrect() {
    boolean containsWords = WordUtils
      .containsAllWords("String to search", "to", "search");
    
    assertTrue(containsWords);
}Copy

StrSubstitutor提供了一种从模板构建字符串的便捷方法

@Test
public void whenSubstituted_thenCorrect() {
    Map<String, String> 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

StrBuilderJava.lang.StringBuilder的替代品。它提供了一些StringBuilder没有提供的新功能

例如,我们可以替换另一个字符串中出现的所有字符串,或者清除字符串而不为其引用分配对象

下面是替换部分字符串快速示例

@Test
public void whenReplaced_thenCorrect() {
    StrBuilder strBuilder = new StrBuilder("example StrBuilder!");
    strBuilder.replaceAll("example", "new");
   
    assertEquals(new StrBuilder("new StrBuilder!"), strBuilder);
}Copy

清除字符串,我们可以通过构建器上调用clear() 方法来做到这一点:

strBuilder.clear();Copy

org.apache.commons.text.diff实现了Myers算法用于计算两个字符串之间的差异。

个字符串之间的差异由一系列修改定义,这些修改可以将一个字符串转换为另一个字符串

三种类型命令用于将字符串转换为另一个字符串– InsertCommandKeepCommandDeleteCommand

EditScript对象保存运行脚本以便将字符串转换为另一个字符串。让我们计算一下为了将一个字符串转换为另一个字符串应该进行的单字修改的数量:

@Test
public void whenEditScript_thenCorrect() {
    StringsComparator cmp = new StringsComparator("ABCFGH", "BCDEFG");
    EditScript<Character> script = cmp.getScript();
    int mod = script.getModifications();
    
    assertEquals(4, mod);
}Copy

org.apache.commons.text.similarity包含可用于查找字符串之间的相似性和距离的算法

例如LongestCommonSubsequence可用于查找两个字符串中常用字符的数量:

@Test
public void whenCompare_thenCorrect() {
    LongestCommonSubsequence lcs = new LongestCommonSubsequence();
    int countLcs = lcs.apply("New York", "New Hampshire");
    
    assertEquals(5, countLcs);
}Copy

类似地,LongestCommonSubsequenceDistance可以用来查找两个字符串不同字符的数量:

@Test
public void whenCalculateDistance_thenCorrect() {
    LongestCommonSubsequenceDistance lcsd = new LongestCommonSubsequenceDistance();
    int countLcsd = lcsd.apply("New York", "New Hampshire");
    
    assertEquals(11, countLcsd);
}Copy

org.apache.text.translate包最初是为了允许我们自定义StringEscapeUtils 提供的规则创建的。

该包有一组类,负责文本转换为一些不同的字符编码模型,如 Unicode数字字符引用。我们还可以创建自己定制翻译程序

让我们看看如何字符串转换为其等效的 Unicode 文本

@Test
public void whenTranslate_thenCorrect() {
    UnicodeEscaper ue = UnicodeEscaper.above(0);
    String result = ue.translate("ABCD");
    
    assertEquals("\u0041\u0042\u0043\u0044", result);
}Copy

这里,我们将要开始翻译的字符的索引传递above() 方法

LookupTranslator使我们能够定义自己查找表,其中每个字符都可以具有相应的值,并且可以将任何文本转换为相应的等效值。

在这个快速教程中,我们已经看到了Apache Commons Text的全部内容及其一些常见功能概述

代码示例可以在GitHub 上找到。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注