深入了解 Java split() 方法:分割字符串的利器

news2025/1/23 9:53:24

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.coloradmin.cn/o/2280837.html

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

相关文章

【博客之星】2024年度创作成长总结 - 面朝大海 ,春暖花开!

没关系的,大家都会做错选择,会 莫名其妙掉眼泪,走在路上会突然崩溃, 但这并不影响我们去看看晚霞, 再次爱上这个世界。 面朝大海 ,春暖花开! about meReviewLife about me 现在我是一名24级计算机类的…

StyleMaster: Stylize Your Video with Artistic Generation and Translation 论文解读

目录 一、概述 二、相关工作 1、图像风格化 2、视频风格化 三、StyleMaster 1、创建对比数据集 2、提取全局描述子 3、局部描述和全局描述结合 4、时间和风格质量的运动适配器 5、Gray Tile ControlNet 四、实验 一、概述 Our StyleMaster demonstrates superior vi…

c++进阶---c++三大特性之一---多态

多态的简单介绍:是一种动态的访问函数,比如:你定义了一个一个人类和一个学生类,当你传入的是学生类的时候,你需要有购物优惠,这种情境下用多态就很适用。 1.简单的多态使用: 1.1构造多态的条件…

安卓程序作为web服务端的技术实现(二):Room 实现数据存储

已经实现web服务器安卓程序作为web服务端的技术实现:AndServer 实现登录权限拦截-CSDN博客 现在需要和正常web项目类似,那么就需要操作数据库 一般web项目都是选择较为重型的数据库如MySQL,SQL server等 这里是安卓项目,我目前…

如何使用Python脚本将本地项目上传到 GitHub

前言 这里我们通过创建一个新的github仓库,来测试我们的脚本能否上传我们本地的项目,并且进行更新。首先你需要先安装 Git,关于这部分我好像没有记录过,这里我搜索看了一下,这篇博客写的Git安装详解应该是比较齐全的&…

Day 15 卡玛笔记

这是基于代码随想录的每日打卡 222. 完全二叉树的节点个数 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值&#x…

IO进程----进程

进程 什么是进程 进程和程序的区别 概念: 程序:编译好的可执行文件 存放在磁盘上的指令和数据的有序集合(文件) 程序是静态的,没有任何执行的概念 进程:一个独立的可调度的任务 执行一个程序分配资…

【Postgres_Python】使用python脚本将多个PG数据库合并为一个PG数据库

需要合并的多个PG数据库表个数和结构一致,这里提供一种思路,选择sql语句insert插入的方式进行,即将其他PG数据库的每个表内容插入到一个PG数据库中完成数据库合并 示例代码说明: 选择一个数据库导出表结构为.sql文件&#xff08…

微软预测 AI 2025,AI Agents 重塑工作形式

1月初,微软在官网发布了2025年6大AI预测,分别是:AI模型将变得更加强大和有用、AI Agents将彻底改变工作方式、AI伴侣将支持日常生活、AI资源的利用将更高效、测试与定制是开发AI的关键以及AI将加速科学研究突破。 值得一提的是,微…

《Java核心技术 卷II》获取Web数据提交表单数据

提交表单数据 了解即可,直接上案例 package 第4章网络.post;import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.io.Reader; import java.net.CookieHandler; import java.net.CookieManager; import java.net.Co…

Spring Boot AOP实现动态数据脱敏

依赖&配置 <!-- Spring Boot AOP起步依赖 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency>/*** Author: 说淑人* Date: 2025/1/18 23:03* Desc…

JavaScript —— 变量与运算符

变量与常量 let&#xff1a;用来定义变量&#xff0c;可以只声明不定义&#xff1b; 例如&#xff1a; <script type"module">let a; // 只声明不定义let x 2, name "kitty"; // 定义若干个变量let d { // 定义一个对象&#xff0c;类似于p…

YOLO-cls训练及踩坑记录

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 一、模型训练 二、测试 三、踩坑记录 1、推理时设置的imgsz不生效 方法一&#xff1a; 方法二&#xff1a; 2、Windows下torchvision版本问题导致报错 总结 前…

Android BitmapShader简洁实现马赛克,Kotlin(一)

Android BitmapShader简洁实现马赛克&#xff0c;Kotlin&#xff08;一&#xff09; 这一篇&#xff0c; Android使用PorterDuffXfermode模式PorterDuff.Mode.SRC_OUT橡皮擦实现马赛克效果&#xff0c;Kotlin&#xff08;3&#xff09;-CSDN博客 基于PorterDuffXfermode实现马…

全球化趋势与中资企业出海背景

1. 全球化趋势与中资企业出海背景 1.1 全球经济格局变化 全球经济格局正经历深刻变革&#xff0c;新兴经济体崛起&#xff0c;全球产业链重塑&#xff0c;中资企业出海面临新机遇与挑战。据世界银行数据&#xff0c;新兴市场和发展中经济体在全球 GDP 中占比已超 40%&#xff…

无人机在城市执法监管中的应用:技术革新与监管挑战

随着科技的不断进步&#xff0c;无人机技术在城市管理中的应用越来越广泛。无人机以其灵活性、高效性和低成本的优势&#xff0c;正在逐渐成为城市执法监管的得力助手。本文将探讨无人机在城市执法监管中的应用现状、技术优势以及面临的挑战。 无人机技术在城市执法监管中的应用…

总结6..

背包问题的解决过程 在解决问题之前&#xff0c;为描述方便&#xff0c;首先定义一些变量&#xff1a;Vi表示第 i 个物品的价值&#xff0c;Wi表示第 i 个物品的体积&#xff0c;定义V(i,j)&#xff1a;当前背包容量 j&#xff0c;前 i 个物品最佳组合对应的价值&#xff0c;同…

【2024年 CSDN博客之星】我的2024年创作之旅:从C语言到人工智能,个人成长与突破的全景回顾

我的2024年创作之旅&#xff1a;从C语言到人工智能&#xff0c;个人成长与突破的全景回顾 引言 回望2024年&#xff0c;我不仅收获了技术上的成长&#xff0c;更收获了来自CSDN平台上无数粉丝、朋友以及网友们的支持与鼓励。在这条创作之路上&#xff0c;CSDN不仅是我展示技术成…

等变即插即用图像重建

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 即插即用算法为解决反问题成像问题提供了一个流行的框架&#xff0c;该框架依赖于通过降噪器隐式定义图像先验。这些算法可以利用强大的预训练降噪器来解决各种成像任务&#xff0c;从而避免了在每…

MLCC电容、铝电解电容寿命计算及影响分析

如何评价MLCC的寿命 MLCC的寿命受温度条件和施加的DC电压条件影响&#xff0c;可以用下列加速方程式来表示。 例如&#xff0c;85oC,16V条件的高温负荷测试是比65oC4V环境高2,374.16倍的加速测试&#xff0c;MTTF(测试样本数40pcs,可信度60%情况下)预计为103,562,200h&#…