返回顶部
首页 > 资讯 > 后端开发 > JAVA >Apache Commons Text 库简介
  • 670
分享到

Apache Commons Text 库简介

apachejavaservlet 2023-09-04 10:09:28 670人浏览 安东尼
摘要

1. 概述 简单地说,Apache Commons Text 库包含许多有用的实用程序方法来处理字符串,超出了核心 Java 提供的方法。 在这个快速介绍中,我们将看到Apache Commons Text是什么,它的用途,以及使用库的一些

1. 概述

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

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

2. Maven 依赖

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

    org.apache.commons    commons-text    1.10Copy

您可以在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

StrBuilderJava.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算法,用于计算两个字符串之间的差异。

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

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

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

--结束END--

本文标题: Apache Commons Text 库简介

本文链接: https://lsjlt.com/news/393362.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Apache Commons Text 库简介
    1. 概述 简单地说,Apache Commons Text 库包含许多有用的实用程序方法来处理字符串,超出了核心 Java 提供的方法。 在这个快速介绍中,我们将看到Apache Commons Text是什么,它的用途,以及使用库的一些...
    99+
    2023-09-04
    apache java servlet
  • Commons beanutils组件简介
            Commons Beanutils是Apache开源组织提供的用于操作JAVA BEAN的工具包。使用commons beanutils,我们可以很方便的...
    99+
    2023-05-31
    commons beanutils bea
  • Oracle Text简介
    Oracle Text为查询应用程序和文档分类应用程序中的文本提供索引,单词和主题搜索以及查看功能。...
    99+
    2024-04-02
  • Oracle数据库简介
    简介 Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移...
    99+
    2018-11-26
    Oracle数据库简介
  • python 标准库简介
    操作系统接口 os 模块提供了许多与操作系统交互的函数: >>> >>> import os >>> os.getcwd() # Return the current ...
    99+
    2023-01-31
    标准 简介 python
  • DataSource与数据库连接池简介(JDBC简介)
    目录起源为何放弃DriverManager连接池数据源实现核心架构DataSourceAPI小结应用数据库连接池示例总结DataSource是作为DriverManager的替代品而...
    99+
    2022-11-13
    数据库连接池Data Source JDBC数据库连接池Data Source
  • 时序数据库 Apache-IoTDB 源码解析之文件格式简介(三)
    时序数据库 Apache-IoTDB 源码解析之系统架构(二) 打一波广告,欢迎大家访问IoTDB 仓库,求一波 Star 。欢迎关注头条号:列炮缓开局,欢迎关注 OSCHINA博客 这一章主要想聊一聊: 行式存储、列式存储的区别 TsF...
    99+
    2020-07-08
    时序数据库 Apache-IoTDB 源码解析之文件格式简介(三)
  • MySQL数据库(三)简介
      前提要述:参考书籍《MySQL必知必会》 2.1 MySQL简介 2.1.1 什么是MySQL MySQL是一种关系数据库管理系统。负责数据库中数据的存储,检索,管理和处理。 2.1.2 MySQL的优点 成本低——M...
    99+
    2021-02-21
    MySQL数据库(三)简介
  • 数据库系统简介
    什么是数据库系统? 数据库系统=数据库(DataBase(DB))+数据库管理系统(Database Management System (DBMS))+数据库应用程序(Database Application (DBA)) 数据库:为了满...
    99+
    2015-08-02
    数据库系统简介 数据库入门 数据库基础教程 数据库 mysql
  • SQL Server 数据库简介
    使用数据库可以高效且条理分明地存储数据,使人们能够更加迅速,方便地管理数据。数据库具有以下特点:         1、可以结构...
    99+
    2024-04-02
  • Python的numpy库ndarray简介
    目录 前言 一、ndarray产生方法 1. np.array() 2.np.arrage() 3.np.linspace() 二、ndarray的属性 总结 前言 numpy库可以用来处理矩阵相关的数学运算,相比于Pyth...
    99+
    2023-09-15
    python numpy 开发语言
  • MySQL默认数据库简介
        类似于MS SQL Server等大型数据库,MySQL数据库也提供了内置的数据库,它们是:INFORMATION_SCHEMAmysqltest1.information_sc...
    99+
    2024-04-02
  • python Polars库的使用简介
    目录文件地址:大家好,我是小F~ 很多人在学习数据分析的时候,肯定都会用到Pandas这个库,非常的实用! 从创建数据到读取各种格式的文件(text、csv、json),或者对数据进...
    99+
    2024-04-02
  • C++中的boost::function库简介
    boost::function Boost.Function库用来提供一个对象化的函数指针,通过它可以很容易的将一个函数封装为仿函数。 boost::function库可以支持自由函...
    99+
    2024-04-02
  • Android中的SQLite数据库简介
    SQLite简介: SQLite是Android系统采用的一种开源的轻量级的关系型的数据库,Android中允许每个应用程序都拥有自己独立的数据库,每个应用程序的数据库的位置一...
    99+
    2022-06-06
    sqlite数据库 SQLite Android
  • Redis数据库的简单介绍
    这篇文章给大家分享的是有关Redis数据库的简单介绍的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。1.Redis数据库介绍redis数据库是一种基于内存可持久化的键值对非关系性数...
    99+
    2024-04-02
  • ceRNA数据库的简单介绍
    这篇文章主要介绍“ceRNA数据库的简单介绍”,在日常操作中,相信很多人在ceRNA数据库的简单介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ceRNA数据库的简单介绍”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-19
  • 简单操作mysql数据库介绍
    下文主要给大家带来简单操作mysql数据库介绍,希望这些内容能够带给大家实际用处,这也是我编辑简单操作mysql数据库介绍这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。1、显示所有数据库:  SH...
    99+
    2024-04-02
  • 简单介绍Python的第三方库yaml
    目录一、yaml基本介绍二、适用场景三、基本的语法规则四、YAML支持的三种数据结构4.1 对象4.2 数组4.2.1 对象和数组4.3 纯量4.4 还有一些特殊符号4.4.1 — ...
    99+
    2024-04-02
  • MongoDB数据库简介与安装方法
    1、简介 MongoDB是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。旨在为WEB应用提供可扩展的高性能数据存储解决方案。在高负载的情况下,添加更多的节点(分布式)...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作