当前位置: 首页 > news >正文

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";

字符串abcde
正向遍历01234
倒向遍历-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";

字符串abcde
正向遍历01234
倒向遍历-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=nullclose=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的接口进行上传文件 通过各种方式进行请求接口&#xff1a;http://localhost:9333/submit, ip和端口号是master服务的信息。此接口通过post请求方式将文件的二进制流…...

成绩管理系统

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

【MYSQL】事务的4大属性,对隔离级别的详细讲解

目录 1.原子性和持久性 1.1.手动提交事务 1.2.自动提交事务 1.3.事务的原理&#xff1a; 2.隔离性 1.读未提交&#xff08;Read Uncommitted&#xff09; 2.读提交&#xff08;Read Committed&#xff09; 3.可重复读 4.串行化 3.一致性 4.理解读提交和可重复读的实现…...

如何在宝塔面板后的阿里云服务器运行Flask项目并公网可以访问?

在你的服务器安装宝塔面板 宝塔面板是服务器运维管理系统 使用宝塔前&#xff1a; 手工输入命令安装各类软件&#xff0c;操作起来费时费力并且容易出错&#xff0c;而且需要记住很多Linux的命令&#xff0c;非常复杂。 使用宝塔后&#xff1a; 2分钟装好面板&#xff0c;一键…...

HTTP(九)-- response对象 -- 向页面响应数据

目录 1. 服务器输出字符数据到浏览器 1.1 获取字符输出流 1.2 实例演示:...

音视频windows安装ffmpeg6.0并使用vs调试源码笔记

建立在上一步&#xff0c;vs已经能够正常调试qt项目&#xff0c;可以实现&#xff1a; 1&#xff1a;qt可以使用mvsc &#xff08;使用cdb&#xff09;进行调试。 2&#xff1a;vs已经可以加载qt项目&#xff0c;借助vs进行调试。 本文目标&#xff1a;编译ffmpeg库&#xf…...

Midjourney|文心一格prompt教程[进阶篇]:Midjourney Prompt 高级参数、各版本差异、官方提供常见问题

Midjourney|文心一格prompt教程[进阶篇]&#xff1a;Midjourney Prompt 高级参数、各版本差异、官方提供常见问题 1.Midjourney Prompt 高级参数 Quality 图片质量是另一个我比较常用的属性&#xff0c;首先需要注意这个参数并不影响分辨率&#xff0c;并不改变分辨率&#x…...

什么是Java虚拟机(JVM)?

Java虚拟机&#xff08;Java Virtual Machine&#xff0c;JVM&#xff09;是Java平台的关键组成部分之一。它是一种虚拟的计算机&#xff0c;可以在计算机上运行Java字节码&#xff08;即编译后的Java程序&#xff09;。 JVM具有以下主要功能&#xff1a; 字节码执行&#xff…...

【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描述...

分布式事务常见解决方案

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

061:cesium设置棋盘图材质(material-5)

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

【AI Earth试玩】权限配置与openAPI调用工具库

前言 AI earth是阿里达摩院出的遥感云计算平台&#xff0c;我简单体验下来感觉像是GEE的python版本遥感深度学习计算平台&#xff0c;整体体验还是挺不错的&#xff0c;尤其是多分类的结果还是挺惊艳的。 平台提供工具箱和notebook两种模式&#xff0c;工具箱整个交互简单易用…...

Tomcat安装与使用

Tomcat 是HTTP服务器&#xff0c;用于使用HTTP协议。 1、下载Tomcat 下载链接&#xff1a;https://tomcat.apache.org/ 进入官网后&#xff0c;根据自己想要下载的版本进行下载&#xff0c;我这里选择下载的版本是Tomcat 8. 点击选择自己想要下载的对应版本&#xff0c;下载Z…...

大数据课程-学习二十四周总结

6.Hive函数 Hive的函数分为三类&#xff1a; 聚合函数、内置函数&#xff0c;表生成函数&#xff0c;聚合函数之前已经学习过了&#xff0c;接下来学习内置函数和表生成函数. 6.1.Hive的内置函数 6.1.1.数学函数 6.1.1.1. 取整函数: round 语法: round(double a) 返回值: BIG…...

【GPT科技系列】国内开发者调用openAI-API科技方法

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

基于QGIS的长株潭城市群边界范围融合实战

背景 在面向区域的研究过程中&#xff0c;比如一些研究区域&#xff0c;如果是具体的行政区划&#xff0c;比如具体的某省或者某市或者县&#xff0c;可以直接从国家官方的地理数据中直接下载就可以。但如果并没有直接的空间数据那怎么办呢&#xff1f;比如之前遇到的一个场景&…...

【MySQL联合查询】轻松实现数据关联

1、联合查询 联合查询又称为多表查询&#xff0c;它的基本执行过程就是笛卡尔积 1.1 认识笛卡尔积 那么什么是笛卡尔积呢&#xff1f; 答&#xff1a;笛卡尔积就是将两张表放在一起进行计算&#xff0c;把第一张表的每一行分别取出来和第二张表的每一行进行连接&#xff0c;得到…...

Windows安装Ubuntu双系统

Windows安装Ubuntu双系统 1.下载Ubuntu 16.04&#xff0c;地址https://releases.ubuntu.com/16.04/ 2.下载Rufus&#xff0c;地址https://rufus.ie/zh/ 3.准备U盘&#xff0c;烧录系统 4.磁盘分区 5.重启&#xff0c;按住shift键 本人电脑是联想小新 Windows11系统&#xff0…...

【大数据之Hadoop】三十四、Hadoop综合调优之小文件优化方法

1 Hadoop小文件弊端 HDFS上每个文件都要在NameNode上创建对应的元数据&#xff0c;这个元数据的大小约为150byte&#xff0c;这样当小文件比较多的时候&#xff0c;就会产生很多的元数据文件&#xff0c;一方面会大量占用NameNode的内存空间&#xff0c;另一方面就是元数据文件…...

2.2 工作队列(Workqueue)与系统线程

内核时间管理基石:从硬件时钟源到jiffies与HZ 问题现场:一个诡异的“时间跳跃” 上周排查一个线上问题,某嵌入式设备的日志突然出现连续半小时的记录缺失,随后时间戳又恢复正常。查看硬件RTC时间准确,但系统uptime显示有跳变。这种“时间消失”现象直接指向内核时间子系…...

AI赋能智能制造:预测性维护在工业4.0中的落地实践

1. 预测性维护&#xff1a;从被动维修到智能预防的革命 想象一下&#xff0c;你家的空调突然在炎热的夏天罢工了&#xff0c;维修师傅告诉你&#xff1a;"这个零件本来三个月前就该换了"。这种场景在工业生产中放大1000倍&#xff0c;就是传统维护方式带来的痛点。预…...

设置 Docker 化的 Python 环境 — 优雅的方式

原文&#xff1a;towardsdatascience.com/setting-a-dockerized-python-environment-the-elegant-way-f716ef85571d?sourcecollection_archive---------1-----------------------#2024-04-02 本文提供了一个逐步指南&#xff0c;介绍如何使用 VScode 和 Dev Containers 扩展设…...

5分钟上手libhv:用自带httpd和curl工具快速搭建本地测试服务

5分钟实战libhv&#xff1a;零配置构建高效本地HTTP测试环境 第一次听说libhv时&#xff0c;我正被一个紧急的前后端联调任务逼得焦头烂额。当时需要快速搭建一个模拟API服务&#xff0c;但Node.js环境配置卡在了权限问题上&#xff0c;Python的SimpleHTTPServer又无法满足复杂…...

汽车变速箱企业Kisssoft许可证成本控制成功案例

汽车变速箱企业Kisssoft许可证成本控制成功案例讲真&#xff0c;用Kisssoft做仿真设计&#xff0c;许可证成本真是吃掉不少预算&#xff0c;是一大推企业并尚未真正掌握咋用好这伙许可证一出来&#xff0c;弄得浪费严重&#xff0c;合规风险也高。咱就在2026年帮助一家汽车变速…...

掌握Vue 3日历组件实战:从业务场景到深度定制的全流程指南

掌握Vue 3日历组件实战&#xff1a;从业务场景到深度定制的全流程指南 【免费下载链接】fullcalendar-vue The official Vue 3 component for FullCalendar 项目地址: https://gitcode.com/gh_mirrors/fu/fullcalendar-vue 在现代Web应用开发中&#xff0c;Vue 3日历组件…...

深入解析C++中的CRTP(奇异递归模板模式)

深入解析C中的CRTP&#xff08;奇异递归模板模式&#xff09; 在C的模板编程领域&#xff0c;CRTP&#xff08;Curiously Recurring Template Pattern&#xff09;作为一种独特的设计模式&#xff0c;为代码复用和类型安全提供了有效的解决方案。本文将探讨CRTP的基本概念、实现…...

技术判断力之AI三问涌

认识Pass层级结构 Pass范围从上到下一共分为5个层级&#xff1a; 模块层级&#xff1a;单个.ll或.bc文件 调用图层级&#xff1a;函数调用的关系。 函数层级&#xff1a;单个函数。 基本块层级&#xff1a;单个代码块。例如C语言中{}括起来的最小代码。 指令层级&#xff1a;单…...

AI Agent开发(3) -如何做上下文管理?

目录前言思路collection设计示例前言 书接上文 https://blog.csdn.net/roadtohacker/article/details/156004134 在Agent开发中&#xff0c;上下文信息的处理很重要&#xff0c;当用户给出新的输入的时候&#xff0c;如何让模型保持对旧消息的记忆&#xff1f;我们知道&#…...

简单实用:Yi-Coder-1.5B代码生成工具快速入门

简单实用&#xff1a;Yi-Coder-1.5B代码生成工具快速入门 1. 为什么选择Yi-Coder-1.5B 如果你正在寻找一个轻量级但功能强大的代码助手&#xff0c;Yi-Coder-1.5B值得考虑。这个仅有15亿参数的模型在编程任务上的表现令人惊喜&#xff0c;特别适合日常开发使用。 Yi-Coder-1…...