StringUtils.substring\[XX]()字符串截取方法总结
StringUtils.substring[XX]()字符串截取方法总结
StringUtils (Apache Commons Lang 3.12.0 API)
文章目录
- StringUtils.substring\[XX]()字符串截取方法总结
- 导入依赖
- 方法介绍
- substring(String str, int start)
- substring(String str, int start, int end)
- substringAfter(String str, String separator)
- substringAfterLast(String str, String separator)
- substringBefore(String str, String separator)
- substringBeforeLast(String str, String separator)
- substringBetween(String str, String tag)
- substringBetween(String str, String open, String close)
- substringsBetween(String str, String open, String close)
导入依赖
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version>
</dependency>
import org.apache.commons.lang3.StringUtils;
方法介绍
substring(String str, int start)
从指定的字符串str
获取子字符串
子字符串的起始位置start
:
- 如果为正,则从字符串开始获取n个字符
- 如果为负,则从字符串末尾获取n个字符
假设String str = "abcde";
字符串 | a | b | c | d | e |
---|---|---|---|---|---|
正向遍历 | 0 | 1 | 2 | 3 | 4 |
倒向遍历 | -5 | -4 | -3 | -2 | -1 |
public class SubstringTest {public static void main(String[] args) {String str = "abcde";System.out.println(StringUtils.substring(str, 0)); //"abcde"System.out.println(StringUtils.substring(str, 2)); //"cde"System.out.println(StringUtils.substring(str, -2)); //"de"}
}
substring(String str, int start, int end)
从指定的字符串str
获取子字符串
子字符串的起始位置start
, 结束位置end
- 如果为正,则从字符串开始获取字符
- 如果为负,则从字符串末尾获取字符
- 如果两者超出字符串大小或
start>end
,则返回""
假设String str = "abcde";
字符串 | a | b | c | d | e |
---|---|---|---|---|---|
正向遍历 | 0 | 1 | 2 | 3 | 4 |
倒向遍历 | -5 | -4 | -3 | -2 | -1 |
public static void main(String[] args) {String str = "abcde";System.out.println(StringUtils.substring(str, 1, 3)); //"bc"System.out.println(StringUtils.substring(str, 6, 7)); //""System.out.println(StringUtils.substring(str, -5, -3)); //"ab"}
substringAfter(String str, String separator)
获取第一次出现分隔符separator
之后的子字符串,分隔符不会返回。
空字符串null
输入将返回空值null
。
输入以下情况将返回空字符串""
:
- 空字符串
str=""
- 分隔符空值
separator=null
- 未找到任何内容
public static void main(String[] args) {System.out.println(StringUtils.substringAfter("abccde", "c")); //"cde"System.out.println(StringUtils.substringAfter(null, "")); //nullSystem.out.println(StringUtils.substringAfter("", "a")); //""System.out.println(StringUtils.substringAfter("abc", null)); //""System.out.println(StringUtils.substringAfter("abcde", "f")); //""}
substringAfterLast(String str, String separator)
获取从后往前第一次出现分隔符separator
之后的子字符串,分隔符不会返回。
空字符串null
输入将返回空值null
。
输入以下情况将返回空字符串""
:
- 空字符串
str=""
- 分隔符空值
separator=null
- 未找到任何内容
public static void main(String[] args) {System.out.println(StringUtils.substringAfterLast("abccde", "c")); //"de"System.out.println(StringUtils.substringAfterLast(null, "")); //nullSystem.out.println(StringUtils.substringAfterLast("", "a")); //""System.out.println(StringUtils.substringAfterLast("abc", null)); //""System.out.println(StringUtils.substringAfterLast("abcde", "f")); //""}
substringBefore(String str, String separator)
获取第一次出现分隔符separator
之前的子字符串。分隔符不会返回。
空字符串null
输入将返回空值null
。
空字符串""
输入将返回空字符串""
。
如果未找到任何内容,则返回字符串str
。
public static void main(String[] args) {System.out.println(StringUtils.substringBefore("abccde", "c")); //"ab"System.out.println(StringUtils.substringBefore(null, "")); //nullSystem.out.println(StringUtils.substringBefore("", "a")); //""System.out.println(StringUtils.substringBefore("abc", null)); //"abc"System.out.println(StringUtils.substringBefore("abcde", "f")); //"abcde"}
substringBeforeLast(String str, String separator)
获取从后往前第一次出现分隔符separator
之前的子字符串。分隔符不会返回。
空字符串null
输入将返回空值null
。
空字符串""
输入将返回空字符串""
。
空分隔符separator=""
或空值分隔符separator=null
或未找到任何内容,则返回字符串str
。
public static void main(String[] args) {System.out.println(StringUtils.substringBeforeLast("abccde", "c")); //"ab"System.out.println(StringUtils.substringBeforeLast(null, "")); //nullSystem.out.println(StringUtils.substringBeforeLast("abc", "")); //"abc"System.out.println(StringUtils.substringBeforeLast("abc", null)); //"abc"System.out.println(StringUtils.substringBeforeLast("abcde", "f")); //"abcde"}
substringBetween(String str, String tag)
获取嵌套在同一字符串str
的两个实例tag
之间的字符串。
空输入字符串str=""
返回空字符串null
,空标记tag=null
返回空值null
。
注意:对字符串从前向后检索,遇到符合条件的子串即返回(样例4)
public static void main(String[] args) {System.out.println(StringUtils.substringBetween("abcdea", "a")); //"bcde"System.out.println(StringUtils.substringBetween("abc", "")); //""System.out.println(StringUtils.substringBetween("", "abc")); //nullSystem.out.println(StringUtils.substringBetween("fffabcdefff", "ff")); //"fabcde"}
substringBetween(String str, String open, String close)
获取嵌套在两个字符串之间的字符串。只返回第一个匹配项。
open=null
或close=null
返回空值null
。
open=""
或close=""
返回空字符串""
。
public static void main(String[] args) {System.out.println(StringUtils.substringBetween("abcdea", "a", "d")); //"bc"System.out.println(StringUtils.substringBetween("", "" ,"")); //""System.out.println(StringUtils.substringBetween("ffabcdeffhijkff", "ff", "ff")); //"abcde"}
substringsBetween(String str, String open, String close)
在字符串中搜索由开始标记open
和结束标记close
分隔的子字符串,返回数组中所有匹配的子字符串。
public static void main(String[] args) {String[] strings = StringUtils.substringsBetween("ffabcdeffffhijkff", "ff", "ff");System.out.println(Arrays.toString(strings)); //[abcde, hijk]}
相关文章:
StringUtils.substring\[XX]()字符串截取方法总结
StringUtils.substring[XX]()字符串截取方法总结 StringUtils (Apache Commons Lang 3.12.0 API) 文章目录 StringUtils.substring\[XX]()字符串截取方法总结导入依赖方法介绍substring(String str, int start)substring(String str, int start, int end)substringAfter(String…...

SeaweedFs使用-通过http接口实现文件操作
通过http接口实现文件操作 SeaweedFs可通过filer的http接口/master中的http接口来进行文件上传 1.通过master的接口进行上传文件 通过各种方式进行请求接口:http://localhost:9333/submit, ip和端口号是master服务的信息。此接口通过post请求方式将文件的二进制流…...

成绩管理系统
系列文章 任务28 成绩管理系统 文章目录 系列文章一、实践目的与要求1、目的2、要求 二、课题任务三、总体设计1.存储结构及数据类型定义2.程序结构3.所实现的功能函数4、程序流程图 四、小组成员及分工五、 测试读入数据浏览全部信息增加学生信息保存数据删除学生信息修改学生…...

【MYSQL】事务的4大属性,对隔离级别的详细讲解
目录 1.原子性和持久性 1.1.手动提交事务 1.2.自动提交事务 1.3.事务的原理: 2.隔离性 1.读未提交(Read Uncommitted) 2.读提交(Read Committed) 3.可重复读 4.串行化 3.一致性 4.理解读提交和可重复读的实现…...

如何在宝塔面板后的阿里云服务器运行Flask项目并公网可以访问?
在你的服务器安装宝塔面板 宝塔面板是服务器运维管理系统 使用宝塔前: 手工输入命令安装各类软件,操作起来费时费力并且容易出错,而且需要记住很多Linux的命令,非常复杂。 使用宝塔后: 2分钟装好面板,一键…...
HTTP(九)-- response对象 -- 向页面响应数据
目录 1. 服务器输出字符数据到浏览器 1.1 获取字符输出流 1.2 实例演示:...

音视频windows安装ffmpeg6.0并使用vs调试源码笔记
建立在上一步,vs已经能够正常调试qt项目,可以实现: 1:qt可以使用mvsc (使用cdb)进行调试。 2:vs已经可以加载qt项目,借助vs进行调试。 本文目标:编译ffmpeg库…...

Midjourney|文心一格prompt教程[进阶篇]:Midjourney Prompt 高级参数、各版本差异、官方提供常见问题
Midjourney|文心一格prompt教程[进阶篇]:Midjourney Prompt 高级参数、各版本差异、官方提供常见问题 1.Midjourney Prompt 高级参数 Quality 图片质量是另一个我比较常用的属性,首先需要注意这个参数并不影响分辨率,并不改变分辨率&#x…...
什么是Java虚拟机(JVM)?
Java虚拟机(Java Virtual Machine,JVM)是Java平台的关键组成部分之一。它是一种虚拟的计算机,可以在计算机上运行Java字节码(即编译后的Java程序)。 JVM具有以下主要功能: 字节码执行ÿ…...
【HISI IC萌新虚拟项目】Package Process Unit模块整体方案·PART3
5. 模块方案说明 5.1CRG 模块方案说明 5.1.1简介 CRG 模块实现复位信号的滤抖功能,可滤除小于100ns的低电平复位毛刺,并对复位信号进行同步化处理。同时,对100MHz的输入时钟信号进行2分频,作为 CPU_IF模块和TEST_CORE模块的工作时钟。 5.1.2接口信号 信号位宽I/O描述...

分布式事务常见解决方案
分布式事务常见解决方案 一、事务介绍 事务是一系列的动作,它们综合在一起才是一个完的工作单元,这些动作必须全部完成,如果有一个失败的话,那么事务就会回滚到最开始的状态,仿佛什么都没发生过一样。 1、单事务概念…...

061:cesium设置棋盘图材质(material-5)
第061个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中设置棋盘材质,请参考源代码,了解CheckerboardMaterialProperty的应用。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共89行)相关API参考:专栏目标…...

【AI Earth试玩】权限配置与openAPI调用工具库
前言 AI earth是阿里达摩院出的遥感云计算平台,我简单体验下来感觉像是GEE的python版本遥感深度学习计算平台,整体体验还是挺不错的,尤其是多分类的结果还是挺惊艳的。 平台提供工具箱和notebook两种模式,工具箱整个交互简单易用…...

Tomcat安装与使用
Tomcat 是HTTP服务器,用于使用HTTP协议。 1、下载Tomcat 下载链接:https://tomcat.apache.org/ 进入官网后,根据自己想要下载的版本进行下载,我这里选择下载的版本是Tomcat 8. 点击选择自己想要下载的对应版本,下载Z…...
大数据课程-学习二十四周总结
6.Hive函数 Hive的函数分为三类: 聚合函数、内置函数,表生成函数,聚合函数之前已经学习过了,接下来学习内置函数和表生成函数. 6.1.Hive的内置函数 6.1.1.数学函数 6.1.1.1. 取整函数: round 语法: round(double a) 返回值: BIG…...

【GPT科技系列】国内开发者调用openAI-API科技方法
1. 前言 openAI上线7个月了,但是随着openAI的约束越来越多,国内开发者想要使用openai的接口实现开发简直就是难上加难。那真的就没有办法了吗?no no no,CF解决一切不开心~ 2.准备工作 我们需要一个国际域名 注册cloudflare账号 …...

基于QGIS的长株潭城市群边界范围融合实战
背景 在面向区域的研究过程中,比如一些研究区域,如果是具体的行政区划,比如具体的某省或者某市或者县,可以直接从国家官方的地理数据中直接下载就可以。但如果并没有直接的空间数据那怎么办呢?比如之前遇到的一个场景&…...

【MySQL联合查询】轻松实现数据关联
1、联合查询 联合查询又称为多表查询,它的基本执行过程就是笛卡尔积 1.1 认识笛卡尔积 那么什么是笛卡尔积呢? 答:笛卡尔积就是将两张表放在一起进行计算,把第一张表的每一行分别取出来和第二张表的每一行进行连接,得到…...

Windows安装Ubuntu双系统
Windows安装Ubuntu双系统 1.下载Ubuntu 16.04,地址https://releases.ubuntu.com/16.04/ 2.下载Rufus,地址https://rufus.ie/zh/ 3.准备U盘,烧录系统 4.磁盘分区 5.重启,按住shift键 本人电脑是联想小新 Windows11系统࿰…...
【大数据之Hadoop】三十四、Hadoop综合调优之小文件优化方法
1 Hadoop小文件弊端 HDFS上每个文件都要在NameNode上创建对应的元数据,这个元数据的大小约为150byte,这样当小文件比较多的时候,就会产生很多的元数据文件,一方面会大量占用NameNode的内存空间,另一方面就是元数据文件…...

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...

【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)
cd /home 进入home盘 安装虚拟环境: 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境: virtualenv myenv 3、激活虚拟环境(激活环境可以在当前环境下安装包) source myenv/bin/activate 此时,终端…...

图解JavaScript原型:原型链及其分析 | JavaScript图解
忽略该图的细节(如内存地址值没有用二进制) 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么:保存在堆中一块区域,同时在栈中有一块区域保存其在堆中的地址(也就是我们通常说的该变量指向谁&…...