深入了解 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存储位置。解决方案如下…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...
