Java 字符串截取详解:常见场景与方法

devtools/2024/11/27 3:43:36/

Java 字符串截取详解:常见场景与方法

在 Java 开发中,截取字符串是一个非常常见的操作,无论是获取文件名还是提取某些特定内容。本文详细介绍了截取字符串最后一位及其他常见截取操作的多种方法,帮助开发者快速上手。


目录

  1. 截取字符串最后一位
    • substring() 截取
    • split() 截取
    • Windows 下目录的特殊处理
    • Linux 下目录的特殊处理
  2. 截取字符串的常见方法
    • 常用方法
    • 方法介绍与应用示例

1. 截取字符串最后一位

1.1 用 substring() 截取

substring() 是最常用的字符串截取方法,支持通过索引位置获取部分字符串。理论格式如下:

java">String result = str.substring(str.lastIndexOf("\\") + 1);

注意:当涉及特殊字符(如反斜杠 \)时,需要用 \\ 进行转义。

示例:

java">public class Test {public static void main(String[] args) {String fileName = "E:/eclipse_workspace1/FtpOperateFile/logs/IYinXin.log";String newFileName = fileName.substring(fileName.lastIndexOf("/") + 1);System.out.println("最后一个文件名为=====>" + newFileName);}
}

输出结果:
最后一个文件名为=====>IYinXin.log


1.2 用 split() 截取

split() 方法可以根据指定的分隔符对字符串进行切割,返回一个字符串数组。

注意:当使用特殊字符(如 /.)作为分隔符时,需要用 \\ 转义。

示例:

java">public class Test {public static void main(String[] args) {String fileName = "E:/eclipse_workspace1/FtpOperateFile/logs/IYinXin.log";// 使用 / 进行切割String[] splitFileName = fileName.split("\\/");// 获取最后一个文件名String lastName = splitFileName[splitFileName.length - 1];System.out.println("最后一个文件名是=====>" + lastName);}
}

输出结果:
最后一个文件名是=====>IYinXin.log


1.3 Windows 下目录的特殊处理

在 Windows 系统中,路径分隔符通常为反斜杠 \,需要注意转义。以下是一个示例:

java">public class Test {public static void main(String[] args) {String filePath = "C:\\Program Files\\Java\\jdk-17\\bin\\java.exe";String fileName = filePath.substring(filePath.lastIndexOf("\\") + 1);System.out.println("文件名是=====>" + fileName);}
}

输出结果:
文件名是=====>java.exe


1.4 Linux 下目录的特殊处理

Linux 系统中的路径分隔符是正斜杠 /,因此处理起来相对简单。例如:

java">public class Test {public static void main(String[] args) {String filePath = "/usr/local/bin/java";String fileName = filePath.substring(filePath.lastIndexOf("/") + 1);System.out.println("文件名是=====>" + fileName);}
}

输出结果:
文件名是=====>java


2. 截取字符串的常见方法

2.1 常用方法

Java 提供了以下两种常见的字符串截取方法:

  1. split():根据分隔符拆分字符串,返回字符串数组。
  2. substring():根据索引截取字符串。

2.2 方法介绍与应用示例
方法一:split()

1. 使用一个参数:split(String regex)

根据给定的正则表达式拆分字符串。注意,正则表达式可能会带来性能损耗。

示例:

java">String str = "AB@CD";
String[] parts = str.split("@");for (String part : parts) {System.out.println(part);
}

输出结果:

AB  
CD  

2. 使用两个参数:split(String regex, int limit)

根据分隔符和分割次数来拆分字符串。

示例:

java">String str = "HelloWorld@qq@com";
String[] parts = str.split("@", 2);for (String part : parts) {System.out.println(part);
}

输出结果:

HelloWorld  
qq@com  

方法二:substring()

1. 单参数:substring(int beginIndex)

从指定索引开始截取到字符串末尾。

示例:

java">String sb = "HelloWorld@qq.com";
String result = sb.substring(5);
System.out.println(result);

输出结果:
World@qq.com


2. 双参数:substring(int beginIndex, int endIndex)

从指定的起始索引截取到结束索引(不包含结束索引对应的字符)。

示例:

java">String sb = "HelloWorld@qq.com";
String result = sb.substring(0, 5);
System.out.println(result);

输出结果:
Hello


3. 根据特定字符截取

可以通过 indexOf() 方法获取特定字符的位置,从而灵活截取字符串。

示例:

java">String sb = "HelloWorld@qq.com";
String result = sb.substring(0, sb.indexOf("@"));
System.out.println(result);

输出结果:
HelloWorld


总结

方法适用场景返回类型注意事项
split()按特定字符或正则表达式拆分字符串字符串数组正则性能可能会受影响
substring()根据索引截取部分字符串或处理路径字符串小心索引越界

不同方法适用于不同场景。例如:

  • 需要简单拆分时,用 split() 更直观。
  • 处理路径或特定字符截取时,substring() 更灵活高效。

通过灵活组合这些方法,能快速解决日常开发中的字符串处理问题!


http://www.ppmy.cn/devtools/137296.html

相关文章

Linux tcpdump 详解教程

简介 tcpdump 是一款在 Linux 平台上广泛使用的网络抓包工具。它可以捕获整个 TCP/IP 协议族的数据包,并支持对网络层、协议、主机、端口等进行过滤。tcpdump 提供了强大的过滤功能,允许使用 and、or、not 等逻辑语句来筛选数据包,非常适合用…

springboot基于Android的华蓥山旅游导航系统

摘 要 华蓥山旅游导航系统是一款专为华蓥山景区设计的智能导览应用,旨在为用户提供便捷的旅游信息服务。该系统通过整合华蓥山的地理信息、景点介绍、交通状况等数据,实现了对景区的全面覆盖。用户可以通过该系统获取实时的旅游资讯、交流论坛、地图等。…

vue3 reactive响应式实现源码

Vue 3 的 reactive 是基于 JavaScript 的 Proxy 实现的,因此它通过代理机制来拦截对象的操作,从而实现响应式数据的追踪。下面是 Vue 3 的 reactive 源码简化版。 Vue 3 reactive 源码简化版 首先,我们需要了解 reactive 是如何工作的&…

道品智能科技移动式水肥一体机:农业灌溉施肥的革新之选

在现代农业的发展进程中,科技的力量正日益凸显。其中,移动式水肥一体机以其独特的可移动性、智能化以及实现水肥一体化的卓越性能,成为了农业领域的一颗璀璨新星。它不仅改变了传统的农业灌溉施肥方式,更为农业生产带来了高效、精…

linux僵尸线程清理

文章目录 1.cleanup_zombies.sh脚本2.terminate_zombie_parents.sh:3.监控僵尸进程monitor_zombies.sh:4. 执行权限5.定时处理6.使用go执行 1.cleanup_zombies.sh脚本 #!/bin/bashecho "检测并尝试清理僵尸进程..."# 查找所有僵尸进程及其父进…

SpringBoot开发——Maven多模块工程最佳实践及详细示例

文章目录 一、前言二、Maven多模块工程的最佳实践1、项目结构清晰2、依赖管理统一3、插件配置统一4、版本控制一致5、模块间通信简化 三、详细示例1、项目结构2、父模块(parent)的pom.xml文件3、子模块(module-api)的pom.xml文件4…

html渲染优先级

HTML元素的渲染优先级通常由以下因素决定&#xff1a; 1.显示方式&#xff1a;块级元素比如 <div> 会自动开始一个新行&#xff0c;而内联元素比如 <span> 则不会。 可编辑性&#xff1a;某些元素默认是不可编辑的&#xff0c;而其他元素可能是可编辑的&#xff…

Redis Key 命名规范文档

开发过程中为确保 Redis 键名的一致性、可读性和易维护性&#xff0c;本规范旨在指导开发团队在使用 Redis 时设计合理的键名格式。 1. 命名格式 采用 模块:子模块:业务描述:标识 的分层格式&#xff0c;明确数据来源和用途。 层次清晰&#xff1a;从全局到具体逐步细化。唯一…