深入了解 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() 方法都能提供强大的支持。掌握它的使用技巧,可以帮助我们更加高效地处理复杂的字符串操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/67874.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dockerfile另一种使用普通用户启动的方式

基础镜像的Dockerfile # 使用 Debian 11.9 的最小化版本作为基础镜像 FROM debian:11.11# 维护者信息 LABEL maintainer"caibingsen" # 复制自定义的 sources.list 文件(如果有的话) COPY sources.list /etc/apt/sources.list # 创建…

力扣707题——设计链表

#题目 从零开始设计链表,我们拆分成两次任务,今天先看1 ,2 ,4 #代码

leetcode刷题记录(七十二)——146. LRU 缓存

(一)问题描述 146. LRU 缓存 - 力扣(LeetCode)146. LRU 缓存 - 请你设计并实现一个满足 LRU (最近最少使用) 缓存 [https://baike.baidu.com/item/LRU] 约束的数据结构。实现 LRUCache 类: * LRUCache(int capacity)…

微信小程序:实现单选,多选,通过变量控制单选/多选

一、实现单选功能 微信小程序提供了 radio 组件来实现单选功能。radio 组件需要配合 radio-group 使用。 1. WXML 代码 <radio-group bindchange"onRadioChange"><label wx:for"{{items}}" wx:key"id"><radio value"{{it…

vue2使用flv.js在浏览器打开flv格式视频

组件地址&#xff1a;GitHub - bilibili/flv.js: HTML5 FLV Player flv.js 仅支持 H.264 和 AAC/MP3 编码的 FLV 文件。如果视频文件使用了其他编码格式就打不开。 flv.vue <template><div><el-dialog :visible.sync"innerVisibleFlv" :close-on-pre…

Spring 中的事件驱动模型

事件驱动的基本了解 事件模式也就是观察者模式&#xff0c;当一个对象改变的时候&#xff0c;所有依赖的对象都会收到一个通知。 Subject&#xff1a;抽象主题 Observer&#xff1a;具体主题 Concrete Subject&#xff1a;抽象观察者&#xff0c;在得到更新通知之后去更新自…

STM32补充——IAP

0 前置知识&#xff1a; FLASH相关内容&#xff1a;前往STM32补充——FLASH STM32三种烧录方式&#xff08;看看就行&#xff09;&#xff1a; 1.ISP&#xff1a;In System Programming&#xff08;在系统编程&#xff09; 执行芯片厂商的 Bootloader 程序进入 ISP 模式&…

k8s的CICD实施项目

环境需求&#xff1a; 目前领导需要做一个需求&#xff0c;临时把我从运维岗位&#xff0c;把我调度到到专家组让我主导cicd的项目实施 目前环境资源 k8s环境&#xff0c;28台服务器&#xff0c;上面是k8s集群&#xff0c;要实施一个测试环境的cicd以及一个生产环境的cicd gitl…

【线性代数】基础版本的高斯消元法

[精确算法] 高斯消元法求线性方程组 线性方程组 考虑线性方程组&#xff0c; 已知 A ∈ R n , n , b ∈ R n A\in \mathbb{R}^{n,n},b\in \mathbb{R}^n A∈Rn,n,b∈Rn&#xff0c; 求未知 x ∈ R n x\in \mathbb{R}^n x∈Rn A 1 , 1 x 1 A 1 , 2 x 2 ⋯ A 1 , n x n b 1…

AIGC视频生成模型:Runway的Gen系列模型

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍Runway开发的视频生成模型Gen系列&#xff0c;包括Gen-1、Gen-2和Gen3 Alpha等&#xff0c;这些模型每次发布都震惊AI圈&#xff0c;荣获多个视频生成的…

【JVM-9】Java性能调优利器:jmap工具使用指南与应用案例

在Java应用程序的性能调优和故障排查中&#xff0c;jmap&#xff08;Java Memory Map&#xff09;是一个不可或缺的工具。它可以帮助开发者分析Java堆内存的使用情况&#xff0c;生成堆转储文件&#xff08;Heap Dump&#xff09;&#xff0c;并查看内存中的对象分布。无论是内…

【基于无线电的数据通信链】Link 11 仿真测试

〇、废话 Link 11 仿真测试 涉及多个方面&#xff0c;包括信号仿真、协议模拟、数据链路层的仿真以及网络性能评估等。Link 11 是一种基于 HF&#xff08;高频&#xff09; 或 UHF&#xff08;超高频&#xff09; 波段的无线通信协议&#xff0c;主要用于军事通信系统中。为了…

AG32 FPGA 的 Block RAM 资源:M9K 使用

1. 概述 AG32 FPGA 包含了 4 个 M9K 块&#xff0c;每个 M9K 块的容量为 8192 bits&#xff0c;总计为 4 个 M9K&#xff08;4K bytes&#xff09;。这使得 AG32 的内部存储非常适合嵌入式应用&#xff0c;能够有效地利用片上资源。 M9K 参数 参考自《AGRV2K_Rev2.0.pdf》。…

【算法笔记】力扣热题100(LeetCode hot-100)438. 找到字符串中所有字母异位词 滑动窗口

力扣热题100&#xff08;LeetCode hot-100&#xff09;之 438. 找到字符串中所有字母异位词 本文主要记录算法思路&#xff0c;着急要答案的同学可以直接跳转到最后的代码。 题目 给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子…

【Python】深入探讨Python中的单例模式:元类与装饰器实现方式分析与代码示例

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门&#xff01; 解锁Python编程的无限可能&#xff1a;《奇妙的Python》带你漫游代码世界 单例模式&#xff08;Singleton Pattern&#xff09;是一种常见的设计模式&#xff0c;它确保一个类只有一个实例&…

Hadoop•搭建完全分布式集群

听说这里是目录哦 一、安装Hadoop&#x1f955;二、配置Hadoop系统环境变量&#x1f96e;三、验证Hadoop系统环境变量是否配置成功&#x1f9c1;四、修改Hadoop配置文件&#x1f36d;五、分发Hadoop安装目录&#x1f9cb;六、分发系统环境变量文件&#x1f368;七、格式化HDFS文…

【机器人学】2-3.六自由度机器人运动学逆解-工业机器人【附MATLAB代码】

解析解推导 假设有一工业机器人参数如下图所示&#xff1a; matlab代码 clc;clear; %带入机器人初始值 d1 0.670; d4 1.280; d6 0.215;a2 0.312; a3 1.075; a4 0.225;Position[288.1, -433.1, 2832,96.9158, -29.6162, 109.3547]; px Position(1)/1000; py Positio…

ARM学习(42)CortexM3/M4 MPU配置

笔者之前学习过CortexR5的MPU配置,现在学习一下CortexM3/M4 MPU配置 1、背景介绍 笔者在工作中遇到NXP MPU在访问异常地址时,就会出现总线挂死,所以需要MPU抓住异常,就需要配置MPU。具体背景情况可以参考ARM学习(41)NXP MCU总线挂死,CPU could not be halted以及无法连…

HTML语言的数据结构

HTML语言的数据结构 引言 HTML&#xff08;超文本标记语言&#xff09;是构建网页的标准语言。尽管HTML本身不是一种编程语言&#xff0c;它为我们提供了一种结构化的信息表示方法&#xff0c;使得网页内容能够有序地展现给用户。HTML的核心在于其标记&#xff08;标签&#…

PIC单片机HEX文件格式分析

在调试PIC单片机在bootloader程序时&#xff0c;需要将hex文件转换为bin文件&#xff0c;在转换之前先了解一下hex文件中数据是如何定义的。 直接打开一个LED灯闪烁的程序生成的hex文件&#xff0c;芯片型号为PIC18F46K80 可以看到每条数据都是由6部分组成的&#xff0c;下面分…