我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Apache Commons Text 库简介

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Apache Commons Text 库简介

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Commons beanutils组件简介

Commons Beanutils是Apache开源组织提供的用于操作JAVA BEAN的工具包。使用commons beanutils,我们可以很方便的对bean对象的属性进行操作。今天为大家介绍一下该包的常用方法。1.什
2023-05-31

Oracle数据库简介

简介Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能
Oracle数据库简介
2018-11-26

python 标准库简介

操作系统接口os 模块提供了许多与操作系统交互的函数:>>>>>> import os>>> os.getcwd() # Return the current working directory'C:\\Python37'>>>
2023-01-31

DataSource与数据库连接池简介(JDBC简介)

DataSource是作为DriverManager的替代品而推出的,DataSource对象是获取连接的首选方法,这篇文章主要介绍了DataSource与数据库连接池简介(JDBC简介),需要的朋友可以参考下
2022-11-13

时序数据库 Apache-IoTDB 源码解析之文件格式简介(三)

时序数据库 Apache-IoTDB 源码解析之系统架构(二)打一波广告,欢迎大家访问IoTDB 仓库,求一波 Star 。欢迎关注头条号:列炮缓开局,欢迎关注 OSCHINA博客这一章主要想聊一聊:行式存储、列式存储的区别TsFile 的格式行式与列式存储的
时序数据库 Apache-IoTDB 源码解析之文件格式简介(三)
2020-07-08

数据库系统简介

什么是数据库系统?数据库系统=数据库(DataBase(DB))+数据库管理系统(Database Management System (DBMS))+数据库应用程序(Database Application (DBA))数据库:为了满足一个机构的信息需求而设
数据库系统简介
2015-08-02

MySQL数据库(三)简介

前提要述:参考书籍《MySQL必知必会》2.1 MySQL简介2.1.1 什么是MySQLMySQL是一种关系数据库管理系统。负责数据库中数据的存储,检索,管理和处理。2.1.2 MySQL的优点成本低——MySQL是开源的,一般可以免费使用。性能——MySQ
MySQL数据库(三)简介
2021-02-21

ceRNA数据库的简单介绍

这篇文章主要介绍“ceRNA数据库的简单介绍”,在日常操作中,相信很多人在ceRNA数据库的简单介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ceRNA数据库的简单介绍”的疑惑有所帮助!接下来,请跟着小编
2023-06-19

Android中的SQLite数据库简介

SQLite简介: SQLite是Android系统采用的一种开源的轻量级的关系型的数据库,Android中允许每个应用程序都拥有自己独立的数据库,每个应用程序的数据库的位置一般在/data/data//data
2022-06-06

常用Python第三方库简介

  什么是Python第三方库?  很多学员让编程学习网小编做一个常用Python第三方库的简介,那么在切入正题之前,小编先来简单介绍下。  Python库的概念理解  首先,先来介绍一下库,它有很多种叫法,比如包、项目等,意思就是别人写好的项目代码,我们下载放到规定的目录后(pip安装)就可以正常使用别人的项目代码,比如
常用Python第三方库简介
2024-04-18

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录