Apache Commons Text 库简介

这篇具有很好参考价值的文章主要介绍了Apache Commons Text 库简介。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 概述

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

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

2. Maven 依赖

让我们首先将以下 Maven 依赖项添加到我们的pom.xml

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-text</artifactId>
    <version>1.10</version>
</dependency>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。

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

@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

4. 计算字符串之间的差异

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

5.字符串之间的相似性和距离

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

6. 文本翻译

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

7. 结论

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

代码示例可以在GitHub 上找到。文章来源地址https://www.toymoban.com/news/detail-646390.html

到了这里,关于Apache Commons Text 库简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Apache Commons开源的工具库介绍

            Apache Commons 是 Apache 软件基金会主持的一个项目,旨在提供一系列可重用的 Java 组件。这些组件覆盖了从数据封装、文本处理到网络通信等各个方面,是 Java 开发中常用的一系列工具库。Apache Commons 项目下的各个库通常以 \\\"commons-\\\" 开头命名,例如 Commons Lang、Commo

    2024年02月21日
    浏览(54)
  • apache-commons-lang3 的基本使用

    更多用法

    2024年01月20日
    浏览(70)
  • org.apache.commons.lang3工具类使用

    首先需要引入依赖 常用方法如下:

    2024年02月12日
    浏览(56)
  • 深入理解Apache Commons Pool2池化技术

    码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 在现代软件开发中,为了提高性能和资源利用率,开发者们经常使用池化技术来管理那些创建和销毁代价较高的对象,比如数据库连接、网络套接字或线程。Apache Commons Pool2是Apache基

    2024年03月17日
    浏览(56)
  • 使用Apache Commons Pool2创建Java对象池

    在Java应用程序中,频繁地创建和销毁对象会消耗大量的内存和CPU资源,影响应用程序的性能和可伸缩性。为了解决这个问题,我们可以使用对象池技术,将对象存储在池中,在需要的时候从池中获取,使用完毕后将对象归还到池中。Apache Commons Pool2是一个流行的开源对象池实

    2023年04月08日
    浏览(52)
  • Maven导入org.apache.commons.lang3.StringUtils

    Maven导入org.apache.commons.lang3.StringUtils Maven导入org.apache.commons.lang3.StringUtils pom.xml中加入以下内容

    2024年02月04日
    浏览(56)
  • IDEA常见错误:程序包org.apache.commons.xxx不存在

    具体错误: Could not transfer artifact org.apache.commons:commons-text:pom:1.1 from/to Nexus(Repository - Nexus Repository Manager) 原因: Nexus镜像源无法找到该程序包地址, 可更改镜像源及配置解决。 不修改会提示认证失败  

    2024年02月11日
    浏览(91)
  • JAVA深化篇_26——Apache commons-io工具包的使用

    Apache基金会介绍 Apache软件基金会(也就是Apache Software Foundation,简称为ASF),是专门为支持开源软件项目而办的一个非盈利性组织。在它所支持的Apache项目与子项目中,所发行的软件产品都遵循Apache许可证(Apache License)。 官方网址为:www.apache.org 。 很多著名的Java开源项目

    2024年02月06日
    浏览(61)
  • 反序列化渗透与攻防(三)之Apache Commons Collections反序列化漏洞

    项目地址:Collections – Download Apache Commons Collections 本地复现环境: jdk 1.7.0_80 IDEA Project Structrure——Projrct设置成1.7 IDEA Project Structrure——Moudles设置成1.7 Settings——Build,Execution,Deployment——Compiler——Java Compiler——Target bytecode version设置成7 Apache Commons Collections ≤ 3.2.1 Apache Com

    2023年04月21日
    浏览(67)
  • java.lang.NoClassDefFoundError: org/apache/commons/io/output/UnsynchronizedByteArrayOutputStream

    一、问题现象 在导出 Excel 过程中,程序报错如下: 二、问题原因 通过报错信息可以看出,这个异常通常出现在你在代码里使用了 org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream 这个类,但是该类所在的依赖包 commons-io 并没有被引入或不存在。 三、解决方案 解决这个问题

    2024年02月10日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包