【Java实用技术】字符串的截取用什么方法好?

简介: 【Java实用技术】字符串的截取用什么方法好?

1、必备字符串操作

我们将字符串操作分为下面6种:

  1. 基本操作方法
  2. 字符串判空、比较
  3. 字符串截取和拆分
  4. 字符串查找和替换
  5. 字符串和其他类型数据的转换
  6. 字符串拼接和格式化

今天我们来讲解第三节。


2、字符串截取和拆分

2.1 对于字符串截取的原生操作

//原生方法:publicString.substring(intbeginIndex, intendIndex)

问题:你能记得截取的部分包含开始索引还是包含结束索引?

如果你不能第一时间回答这个问题,说明你对原生方法使用不熟悉,在开发时候,你可能会查阅jdk文档,或者写测试方法验证。

这在日常开发中会浪费一定时间。

答案:结果中包含beginIndex,但是不包含endIndex


原生方法使用限制:使用前要判空,记住开始和结束索引是否包含在结果内。

特别麻烦的是,如果你要截取指定分割符之间的部分,需要再使用indexOf()方法获得索引,作为开始索引记得要加1。

代码如下:

Stringss="java_pandas.jpg";
if (ss!=null) {
Strings1=ss.substring(ss.indexOf("_") +1, ss.indexOf("."));
}


2.2 推荐字符串截取操作

Apache工具类StringUtils.substringXX()

优势:不用担心字符串为null(空),方法名直白。

推荐常用方法:

// 截取字符串2个字符中间的字符串publicstaticStringsubstringBetween(Stringstr, Stringopen, Stringclose)
// 截取指定分割符后面的部分publicstaticStringsubstringAfterLast (Stringstr, Stringseparator)
// 截取指定分割符前面的部分publicstaticStringsubstringBeforeLast (Stringstr, Stringseparator)

对于substringBetween方法,结果就是不包含开始和结束分割符的部分,这也很符合一般的操作思维。


对于上面提到的一个截取特定分割符之间的部分,可以一行代码搞定。

Stringss="java_pandas.jpg";
Strings2=StringUtils.substringBetween(ss, "_", ".");

开发中比较常见的需求是截取某个特定分割符之间的字符串,又或者是截取特定分割符前(后)的字符串。

这些在工具类中直接调用,比自己写方法要方便很多。


3、demo用例

 

importorg.apache.commons.lang3.StringUtils;
/*** Java实用技术手册 By Pandas。* JDK版本:jdk1.8.0_66** @author Pandas* @date 2021/10/7*/publicclassStringSub {
/*** 截取字符串方法用哪个?*/publicstaticvoidmain(String[] args) {
Stringss="java_pandas.jpg";
System.out.println("*** String原生substring方法 ***");
// 对下划线和句号之间内容截取if (ss!=null) {
Strings1=ss.substring(ss.indexOf("_") +1, ss.indexOf("."));
System.out.println(s1);
        }
System.out.println("*** StringUtils 方法 *****");
Strings2=StringUtils.substringBetween(ss, "_", ".");
System.out.println(s2);
// 获取文件后缀名Stringpostfix=StringUtils.substringAfterLast(ss, ".");
StringfileName=StringUtils.substringBeforeLast(ss, ".");
System.out.println("文件名:"+fileName);
System.out.println("文件后缀:"+postfix);
    }
}
/** 运行结果===>*** String原生substring方法 ***pandas*** StringUtils 方法 *****pandas文件名:java_pandas文件后缀:jpg*/

 

4、总结

非必要情况下不要使用原生的substring方法,请直接使用StringUtils.substringXX()


是不是感觉前2期都比较简单?

现在是热身操作,后面会有更复杂的高阶技巧等着你。

欢迎阅读本期内容,希望对新入行的你有帮助。

过目不忘本领.jpg


我是Pandas,专注Java编程实用技术分享,公众号Java实用技术手册和B站均有视频解说,欢迎来玩。

如果你觉得这篇文章有用,别忘了点赞+关注,一起进步!

相关文章
|
5天前
|
存储 安全 算法
Java容器及其常用方法汇总
Java Collections框架提供了丰富的接口和实现类,用于管理和操作集合数据。
Java容器及其常用方法汇总
|
7天前
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
29 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
3天前
|
JavaScript 安全 Java
智慧产科一体化管理平台源码,基于Java,Vue,ElementUI技术开发,二开快捷
智慧产科一体化管理平台覆盖从备孕到产后42天的全流程管理,构建科室协同、医患沟通及智能设备互联平台。通过移动端扫码建卡、自助报道、智能采集数据等手段优化就诊流程,提升孕妇就诊体验,并实现高危孕产妇五色管理和孕妇学校三位一体化管理,全面提升妇幼健康宣教质量。
31 12
|
5天前
|
Java API
java.time常用方法汇总
`java.time` API 是从 Java 8 开始引入的时间日期处理库,旨在替代老旧的 `java.util.Date` 和 `Calendar`。它提供了更简洁、强大和灵活的方式处理日期、时间、时区及时间间隔,支持全球化和时间计算需求。API 包含获取当前时间、创建指定时间、解析和格式化字符串、进行加减运算、比较时间、获取年月日时分秒、计算时间间隔、时区转换以及判断闰年等功能。示例代码展示了如何使用这些功能,极大简化了开发中的时间处理任务。
|
24天前
|
Java 程序员 调度
Java 高级面试技巧:yield() 与 sleep() 方法的使用场景和区别
本文详细解析了 Java 中 `Thread` 类的 `yield()` 和 `sleep()` 方法,解释了它们的作用、区别及为什么是静态方法。`yield()` 让当前线程释放 CPU 时间片,给其他同等优先级线程运行机会,但不保证暂停;`sleep()` 则让线程进入休眠状态,指定时间后继续执行。两者都是静态方法,因为它们影响线程调度机制而非单一线程行为。这些知识点在面试中常被提及,掌握它们有助于更好地应对多线程编程问题。
55 9
|
9月前
|
存储 XML 缓存
Java字符串内幕:String、StringBuffer和StringBuilder的奥秘
Java字符串内幕:String、StringBuffer和StringBuilder的奥秘
90 0
|
6月前
|
安全 Java API
【Java字符串操作秘籍】StringBuffer与StringBuilder的终极对决!
【8月更文挑战第25天】在Java中处理字符串时,经常需要修改字符串,但由于`String`对象的不可变性,频繁修改会导致内存浪费和性能下降。为此,Java提供了`StringBuffer`和`StringBuilder`两个类来操作可变字符串序列。`StringBuffer`是线程安全的,适用于多线程环境,但性能略低;`StringBuilder`非线程安全,但在单线程环境中性能更优。两者基本用法相似,通过`append`等方法构建和修改字符串。
91 1
|
6月前
|
API C# 开发者
WPF图形绘制大师指南:GDI+与Direct2D完美融合,带你玩转高性能图形处理秘籍!
【8月更文挑战第31天】GDI+与Direct2D的结合为WPF图形绘制提供了强大的工具集。通过合理地使用这两种技术,开发者可以创造出性能优异且视觉效果丰富的WPF应用程序。在实际应用中,开发者应根据项目需求和技术背景,权衡利弊,选择最合适的技术方案。
381 0
|
6月前
|
存储 Java
|
9月前
|
存储 Java
Java基础复习(DayThree):字符串基础与StringBuffer、StringBuilder源码研究
Java基础复习(DayThree):字符串基础与StringBuffer、StringBuilder源码研究
Java基础复习(DayThree):字符串基础与StringBuffer、StringBuilder源码研究

热门文章

最新文章