【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站均有视频解说,欢迎来玩。

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

相关文章
|
11天前
|
存储 监控 安全
单位网络监控软件:Java 技术驱动的高效网络监管体系构建
在数字化办公时代,构建基于Java技术的单位网络监控软件至关重要。该软件能精准监管单位网络活动,保障信息安全,提升工作效率。通过网络流量监测、访问控制及连接状态监控等模块,实现高效网络监管,确保网络稳定、安全、高效运行。
40 11
|
20天前
|
XML Java 编译器
Java注解的底层源码剖析与技术认识
Java注解(Annotation)是Java 5引入的一种新特性,它提供了一种在代码中添加元数据(Metadata)的方式。注解本身并不是代码的一部分,它们不会直接影响代码的执行,但可以在编译、类加载和运行时被读取和处理。注解为开发者提供了一种以非侵入性的方式为代码提供额外信息的手段,这些信息可以用于生成文档、编译时检查、运行时处理等。
58 7
|
28天前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
141 83
|
2天前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
28天前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
55 26
|
20天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
1月前
|
安全 Java 开发者
Java中WAIT和NOTIFY方法必须在同步块中调用的原因
在Java多线程编程中,`wait()`和`notify()`方法是实现线程间协作的关键。这两个方法必须在同步块或同步方法中调用,这一要求背后有着深刻的原因。本文将深入探讨为什么`wait()`和`notify()`方法必须在同步块中调用,以及这一机制如何确保线程安全和避免死锁。
41 4
|
1月前
|
Java
深入探讨Java中的中断机制:INTERRUPTED和ISINTERRUPTED方法详解
在Java多线程编程中,中断机制是协调线程行为的重要手段。了解和正确使用中断机制对于编写高效、可靠的并发程序至关重要。本文将深入探讨Java中的`Thread.interrupted()`和`Thread.isInterrupted()`方法的区别及其应用场景。
30 4
|
27天前
|
Java 数据处理 数据安全/隐私保护
Java处理数据接口方法
Java处理数据接口方法
26 1
|
7月前
|
存储 XML 缓存
Java字符串内幕:String、StringBuffer和StringBuilder的奥秘
Java字符串内幕:String、StringBuffer和StringBuilder的奥秘
78 0