深入了解 Java split() 方法:分割字符串的利器
Java 提供的 split() 方法是 String 类中一个常用的工具,它可以将一个字符串根据指定的分隔符切割成多个子字符串,并以字符串数组的形式返回。这个方法常用于字符串的处理、数据解析等场景。本文将详细介绍 Java 中 split() 方法的使用方式,并通过多个具体案例帮助大家深入理解如何使用它。
方法签名
public String[] split(String regex)
regex:正则表达式,用于匹配分隔符。- 返回值:返回一个
String数组,包含按分隔符切割后的各个子字符串。
基本用法
split() 方法可以将一个字符串按指定的分隔符切割。分隔符可以是单个字符、多个字符,甚至是正则表达式。
示例 1:使用单一字符分隔符
public class SplitExample {public static void main(String[] args) {String str = "apple,banana,cherry";String[] result = str.split(",");for (String s : result) {System.out.println(s);}}
}
输出:
apple
banana
cherry
在这个例子中,字符串 "apple,banana,cherry" 按逗号 "," 分割成三个部分。
示例 2:使用正则表达式作为分隔符
split() 方法不仅支持字符分隔符,还支持正则表达式。例如,可以使用空白字符(如空格、制表符等)作为分隔符。
public class SplitExample {public static void main(String[] args) {String str = "apple banana\tcherry grape";String[] result = str.split("\\s+"); // 正则表达式表示一个或多个空白字符for (String s : result) {System.out.println(s);}}
}
输出:
apple
banana
cherry
grape
在这个例子中,"\\s+" 是正则表达式,表示匹配一个或多个空白字符(包括空格、制表符等)。
示例 3:限制分割次数
split() 方法还允许你限制分割的最大次数。通过传入第二个参数 limit,你可以指定最多分割几次。如果分割次数达到限制,剩余的部分将作为最后一个元素保留。
public class SplitExample {public static void main(String[] args) {String str = "apple,banana,cherry,grape";String[] result = str.split(",", 3); // 最多分割两次for (String s : result) {System.out.println(s);}}
}
输出:
apple
banana
cherry,grape
在这个例子中,由于 limit 为 3,字符串最多被分割成 3 部分。最后一个部分 "cherry,grape" 保留了剩余的所有内容。
示例 4:分割空字符串
如果原始字符串为空,调用 split() 方法会返回一个包含一个空字符串的数组。
public class SplitExample {public static void main(String[] args) {String str = "";String[] result = str.split(",");for (String s : result) {System.out.println(s);}}
}
输出:
(什么也不打印)
当输入字符串为空时,split() 方法会返回一个包含零个元素的数组。
示例 5:分割包含多个连续分隔符的字符串
当原始字符串中包含多个连续的分隔符时,split() 会认为这些分隔符之间是空的,分割出多个空字符串。
public class SplitExample {public static void main(String[] args) {String str = "apple,,banana,,,cherry";String[] result = str.split(",");for (String s : result) {System.out.println(s.isEmpty() ? "Empty" : s);}}
}
输出:
apple
Empty
banana
Empty
Empty
cherry
在这个例子中,两个连续的逗号 ,, 会导致空字符串的产生。
示例 6:分割多个分隔符
Java 的 split() 方法支持使用正则表达式,因此你可以非常方便地根据多个不同的分隔符来分割字符串。例如,假设我们需要根据逗号(,)和分号(;)来分割字符串,可以通过正则表达式来实现。
public class SplitExample {public static void main(String[] args) {String str = "apple,banana;cherry,grape;orange";String[] result = str.split("[,;]"); // 使用正则表达式匹配逗号和分号for (String s : result) {System.out.println(s);}}
}
输出:
apple
banana
cherry
grape
orange
在这个例子中,"[;]" 是正则表达式,表示匹配逗号 , 或分号 ; 作为分隔符。因此,字符串 "apple,banana;cherry,grape;orange" 被成功地按逗号和分号分割成多个子字符串。
示例 7:使用正则表达式的特殊符号
在正则表达式中,某些字符如 .、* 等具有特殊含义,因此如果要以这些字符作为分隔符,必须进行转义。
public class SplitExample {public static void main(String[] args) {String str = "apple.banana.cherry";String[] result = str.split("\\."); // 使用 \\ 转义点字符for (String s : result) {System.out.println(s);}}
}
输出:
apple
banana
cherry
由于 . 在正则表达式中是特殊字符,表示任意字符,因此需要使用 \\. 来表示字面上的点符号。
总结
split() 方法是 Java 中处理字符串的一个非常有用的工具,它允许根据指定的分隔符将字符串分割成多个部分,并返回一个字符串数组。通过正则表达式的灵活性,我们可以轻松地按照各种复杂的规则进行分割。
关键点:
split()使用正则表达式作为分隔符,支持多种匹配方式。- 可以通过
limit参数限制最大分割次数。 - 需要注意空字符串、多个连续分隔符的情况。
- 对于正则表达式中的特殊字符,需要进行适当的转义。
无论是在数据处理、日志分析、文本解析还是其他任务中,split() 方法都能提供强大的支持。掌握它的使用技巧,可以帮助我们更加高效地处理复杂的字符串操作。
相关文章:
深入了解 Java split() 方法:分割字符串的利器
Java 提供的 split() 方法是 String 类中一个常用的工具,它可以将一个字符串根据指定的分隔符切割成多个子字符串,并以字符串数组的形式返回。这个方法常用于字符串的处理、数据解析等场景。本文将详细介绍 Java 中 split() 方法的使用方式,并…...
pgsql中处理数组类型字段
1、代码中存入和读取 需要使用自定义转换器 Slf4j public class ArrayTypeHandler extends BaseTypeHandler<List<String>> {Overridepublic void setNonNullParameter(PreparedStatement ps, int i, List<String> parameter, JdbcType jdbcType)throws SQL…...
如何正确定位前后端bug?
在平时的开发过程中,正确定位前后端bug是提高开发效率和项目质量的关键。以下是一些实用的方法。 一、前后端bug 特征 前端主要负责显示数据,后端主要负责处理数据、存储数据,前后端主要通过接口进行数据交换。 1.前端bug特征 界面显示类…...
mfc操作json示例
首先下载cJSON,加入项目; 构建工程,如果出现, fatal error C1010: unexpected end of file while looking for precompiled head 在cJSON.c文件的头部加入#include "stdafx.h"; 看情况,可能是加到.h或者是.cpp文件的头部,它如果有包含头文件, #include &…...
【技术总结类】2024,一场关于海量数据治理以及合理建模的系列写作
目录 1.今年的创作路线 2.先说第一条线 2.1.由日志引出的海量文本数据存储和分析问题 2.2.监控以及监控的可视化 2.3.数据量级再往上走牵扯出了大数据 2.4.由大数据牵扯出的JAVA线程高级内容 3.第二条线,也是2025要继续的主线 1.今年的创作路线 今年的写作内…...
Dockerfile另一种使用普通用户启动的方式
基础镜像的Dockerfile # 使用 Debian 11.9 的最小化版本作为基础镜像 FROM debian:11.11# 维护者信息 LABEL maintainer"caibingsen" # 复制自定义的 sources.list 文件(如果有的话) COPY sources.list /etc/apt/sources.list # 创建…...
python的pushbullet库在设备之间发送通知链接文件
Pushbullet 是一个非常方便的 Python 库,可以帮助你在设备之间发送通知、链接、文件等。以下是 Pushbullet 的一些主要功能和使用方法: 功能 与你的 Pushbullet 账户关联的设备(需要下载对应的pushbullet手机APP、电脑客户端)之…...
STM32之FreeRTOS开发介绍(十九)
STM32F407 系列文章 - freertos(十九) 目录 前言 一、简述 二、开源网址 三、原理及功能特性 1.原理简介 2.功能介绍 1.任务调度 2.任务管理 3.中断管理 4.消息队列 3.特点说明 4.优缺点 四、参考书籍 五、实现方式 总结 前言 FreeRTOS是…...
用java配合redis 在springboot上实现令牌桶算法
令牌桶算法配合 Redis 在 Java 中的应用令牌桶算法是一种常用的限流算法,适用于控制请求的频率,防止系统过载。结合 Redis 使用可以实现高效的分布式限流。 一.、引入依赖首先,需要在 pom.xml 文件中引入 spring-boot-starter-data-re…...
DCGAN - 深度卷积生成对抗网络:基于卷积神经网络的GAN
深度卷积生成对抗网络(DCGAN,Deep Convolutional Generative Adversarial Network)是生成对抗网络(GAN)的一种扩展,它通过使用卷积神经网络(CNN)来实现生成器和判别器的构建。与标准…...
51c~SLAM~合集1
我自己的原文哦~ https://blog.51cto.com/whaosoft/12327374 #GSLAM 自动驾驶相关~~~ 一个通用的SLAM架构和基准 GSLAM:A General SLAM Framework and Benchmark 开源代码:https://github.com/zdzhaoyong/GSLAM SLAM技术最近取得了许多成功&am…...
优化使用 Flask 构建视频转 GIF 工具
优化使用 Flask 构建视频转 GIF 工具 优化后的项目概述 在优化后的版本中,我们将实现以下功能: 可设置每个 GIF 的帧率和大小:用户可以选择 GIF 的帧率和输出大小。改进的用户界面:使用更现代的设计使界面更美观、整洁。自定义…...
spring cloud如何实现负载均衡
在Spring Cloud中,实际上并没有直接支持lb:\\这样的URL前缀来自动解析为负载均衡的服务地址。lb:\\这样的表示可能是在某些特定框架、文档或示例中自定义的,但它并不是Spring Cloud官方API或规范的一部分。 Spring Cloud实现负载均衡的方式通常依赖于服…...
leetcode19-删除链表的第n结点
leetcode 19 思路 要删除倒数第n个元素,那么就要找到倒数第n1个元素,那么我们需要两个指针来记录,首先快指针需要先走n1步,然后快慢指针一起进行移动,直到快指针为null的时候,此时慢指针恰好走到倒数第n…...
软件测试—— 接口测试(HTTP和HTTPS)
软件测试—— 接口测试(HTTP和HTTPS) HTTP请求方法GET特点使用场景URL结构URL组成部分URL编码总结 POST特点使用场景请求结构示例 请求标头和响应标头请求标头(Request Headers)示例请求标头 响应标头(Response Header…...
3.1 Go函数调用过程
在 Go 语言中,函数调用的核心机制依赖于内存的栈区分配和指针操作,理解这一原理有助于掌握函数的执行过程。 1. 内存结构概述 在 Go 程序编译成可执行文件并启动后,操作系统会为其分配进程内存,进程内存主要分为以下区域&#x…...
TDengine 做 Apache SuperSet 数据源
Apache Superset 是一个现代的企业级商业智能(BI)Web 应用程序,主要用于数据探索和可视化。它由 Apache 软件基金会支持,是一个开源项目,它拥有活跃的社区和丰富的生态系统。Apache Superset 提供了直观的用户界面…...
08_游戏启动逻辑
1.GameRoot.cs 控制 服务层Svc.cs 和业务层Sys.cs 的初始化 创建脚本GameRoot.cs(游戏入口 已进入就初始化各个系统) 创建资源加载服务.cs Res 将服务层Svc设置成单例类所以需要挂载在GameRoot身上,这样就可以通过GameRoot来调各个服务 接…...
Ardupilot开源无人机之Geek SDK进展2024-2025
Ardupilot开源无人机之Geek SDK进展2024-2025 1. 源由2. 状态3. TODO3.1 【进行中】跟踪目标框3.2 【暂停】onnxruntime版本3.3 【完成】CUDA 11.8版本3.4 【完成】pytorch v2.5.1版本3.5 【未开始】Inference性能3.6 【未开始】特定目标集Training 4. Extra-Work4.1 【完成】C…...
在K8S中,如果后端NFS存储的IP发送变化如何解决?
在Kubernetes中,如果后端NFS存储的IP地址发生了变化,您需要更新与之相关的Peristent Volume(PV)或Persistent Volume Claim(PVC)以及StorageClass中关于NFS服务器IP的配置信息,确保K8S集群内的Pod能够正确连接到新的NFS存储位置。解决方案如下…...
从哈希表到链表:一次搞懂链地址法解决冲突的C++实现细节(含插入与删除操作避坑)
从哈希表到链表:链地址法的C实战精解与避坑指南 在数据结构的世界里,哈希表因其接近O(1)的理想查找效率而备受青睐。但当我们真正动手实现时,特别是采用链地址法解决冲突时,那些看似简单的链表操作却暗藏玄机。本文将带您深入链地…...
KL散度在VAE中的应用:为什么高斯分布假设如此重要?
KL散度在VAE中的工程实践:高斯分布假设的深层逻辑 变分自编码器(VAE)作为生成模型的重要代表,其核心思想是通过学习数据的潜在表示来重构输入。在这个过程中,KL散度扮演着关键角色——它不仅是连接编码器与解码器的桥梁…...
AWS注册总失败?可能是你的浏览器或网络设置有问题(附详细排查流程)
AWS注册失败的终极排查指南:从浏览器到网络的深度解决方案 注册AWS账户本该是个简单的过程,但当你反复遭遇"无法完成注册"的提示时,那种挫败感简直让人抓狂。作为云计算领域的资深从业者,我见过太多用户卡在这个看似简…...
Qwen2-VL-2B-Instruct惊艳案例:模糊截图→精准召回原始高清图(跨分辨率鲁棒性)
Qwen2-VL-2B-Instruct惊艳案例:模糊截图→精准召回原始高清图(跨分辨率鲁棒性) 你有没有遇到过这种情况?在网上看到一张特别喜欢的图片,但保存下来后发现它被压缩得模糊不清,或者只是一个低分辨率的小图。…...
并发测试中的时序问题:如何复现与修复?
在分布式系统与高并发应用日益普及的今天,时序问题已成为软件测试领域最具挑战性的难题之一。这类问题往往表现为数据不一致、状态错乱、逻辑异常或系统崩溃,其根源在于多个线程或进程对共享资源或状态的操作顺序与预期不符。对于软件测试从业者而言&…...
VideCoding - Claude Code 核心工作流 (Core Workflow)
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/159921522 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 Claude…...
0欧姆电阻在电子设计中的关键应用与选型指南
1. 0欧姆电阻的实质与特性在电子工程实践中,0欧姆电阻(Zero-Ohm Resistor)是一种表面贴装或插装形式的特殊电子元件。虽然标称值为零欧姆,但实际测量时会发现其存在微小的阻值——典型值在20-50毫欧之间。这个特性使其既不同于理想…...
嵌入式C轻量序列化库:结构体打包与位操作零依赖实现
1. 项目概述dot_util是一个轻量级、零依赖的嵌入式 C 语言工具库,专为资源受限的 MCU(如 Cortex-M0/M3/M4、RISC-V 32 位内核)设计。其核心定位并非通用算法库或 HAL 封装,而是聚焦于底层数据序列化与结构体操作的工程痛点&#x…...
编译期计算失效?内存布局异常?constexpr调试全链路指南,一线工程师紧急避坑手册
第一章:编译期计算失效?内存布局异常?constexpr调试全链路指南,一线工程师紧急避坑手册识别 constexpr 实际求值时机的三步验证法 当 constexpr 函数在运行时才执行(而非编译期),往往因隐式类型…...
别再死记硬背!用孙楠老师的《现代模拟集成电路设计》轻松搞定CMOS差分放大器设计
从零到精通:孙楠《现代模拟集成电路设计》中的CMOS差分放大器实战指南 模拟集成电路设计常被视为电子工程领域的"黑魔法",尤其是CMOS差分放大器这一核心模块。许多初学者在拉扎维等经典教材的复杂公式推导中迷失方向,却不知如何将…...
