Java split()方法详解以及split()后开头多出空字符串的原因分析

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

1. split()方法介绍

//java.lang.string.split

split()方法的作用是将一个字符串按照指定的分隔符分割为多个子字符串,然后将结果拼接为字符串数组返回。
首先我们看一下源码的定义:

stringObj.split([separator,[limit]])
1. stringObj 是你想要分解的String对象。该对象本身是不会被split()方法修改的。
2. separator: 分隔符,是可选项,它可以是字符串或正则表达式,如果不指定分隔符则会返回包含整个字符串的单一元素数组,也就是没有进行分割。
3. limit:可选项,用来限制返回数组中的元素个数。

下面来看实际举例:

//按照空格进行分割
 String a = "Hello World";
 String[] a_array = a.split(" "); // ["Hello", "World"]

//按照多种分割符进行分割:左中括号,右中括号以及逗号
String b = "[a, b]";
String[] b_array = b.split("\\[|\\]||\\,"); //["", "a", "b"]

2. 高级用法以及分割后开头多出空字符串的原因

注意!在上面的多分隔符例子中:

  1. 多种分隔符要统一写在一个字符串里;
  2. 特殊字符要用\转义;
  3. 不同分隔符间用管道符|隔开

这里有意思的是为什么开头多了一个空字符串呢?
原因是我们将左中括号也指定为分隔符之一,
程序会认为左中括号分隔了左边的空字符串和右边字符“a”。

那么进一步思考, 为什么结尾没有多出一个空字符串?
即为什么b_array不是["", "a", "b", ""],而是["", "a", "b"]呢?

这是因为split()的源码中把分割结束后得到的list的结尾中长度为0的子串(也就是"")都删掉了。

在这里插入图片描述
list.subList(0, resultSize).toArray(result)这行代码将resultSize从原本的4变为了3,
subList(0, 3)即下标从0到3,包含0不包含3,也就是我们看到的结果:["", "a", "b"]

【硬件相关】IB网与以太网核心技术解析及高性能网络部署指南 本文深入解析了IB网与以太网的核心技术差异,包括协议栈、流量控制机制及硬件架构,并提供了高性能网络部署的实战指南。通过对比测试和调优案例,展示了IB网在低延迟和高负载下的优势,以及混合组网中的创新应用,助力超算集群和高效网络部署。 阅读详情

相关推荐

从服装打版到激光切割:二维异形件排版算法在实际生产中的避坑指南

本文深入探讨二维异形件排版算法在服装、家具等行业的实际应用,对比NFP和重叠移除两种核心策略的优缺点,并提供算法落地的五大实战陷阱与解决方案。通过案例分析和技术要点解析,帮助生产管理者提升材料利用率5%-15%,优化生产效率。

weixin_28717431的博客 416

String.split()遇到空字符串的几种情况

Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回字符串数组    split 方法       该方法的作用是:将一个字符串分割为子字符串,然后将结果作为字符串数组返回。       stringObj.split([separator,[limit]])         stringObj              必选项。要被分解的 String 对象或文

杜 5万+

别再死记硬背注意力机制了!用Python+PyTorch从零实现一个HAN(Hierarchical Attention Network)

本文详细介绍了如何使用Python和PyTorch从零实现Hierarchical Attention Network(HAN),通过代码级解析帮助读者深入理解层次注意力机制。文章涵盖词级和句子级注意力层的构建、完整HAN架构的实现、训练技巧及注意力可视化方法,特别适合希望掌握高级NLP技术的开发者。

weixin_28744423的博客 161

java中字符串分割时(split)如果包含特殊字符‘{‘、‘|‘、‘}报错解决。

报错的原因是Split方法底层是正则表达,对特殊字符需要转义处理才可以。以下是split()的源码 public String[] split(String regex) { return split(regex, 0); } public String[] split(String regex, int limit) { /* fastpath if the regex is a (1)one-char String and this ch.

qq_36684348的博客 3832

安卓开发者必看:Win11最新Fastboot驱动安装避坑指南(含Android Bootloader Interface选择技巧)

本文为安卓开发者提供了Windows 11系统下Fastboot驱动安装的详细指南,特别针对Android Bootloader Interface选择技巧和多设备并发连接时的驱动冲突问题。通过解析Windows 11的特殊驱动验证机制,推荐使用Google官方USB驱动,并提供安装流程、版本选择建议及疑难问题排查方法,帮助开发者高效完成开发环境配置。

sea99的博客 1331

QCM6490平台DDR测试:从QDUTT配置到眼图分析的实战指南

本文详细介绍了QCM6490平台DDR测试的全流程,从QDUTT工具安装配置到眼图分析,提供了实战操作指南和常见问题解决方案。通过具体案例分享,帮助工程师掌握DDR测试技巧,确保内存稳定性,特别适用于物联网和边缘计算设备的开发调试。

weixin_33910191的博客 456

【java易错点】java split分割字符串 空格问题解析

String s = "@123.com"; String[] data = s.split("@"); // 以@分割字符串,获得@后的值。 运行结果如下 data[0] : " "; data[1] : 123.com ; 此时,你会发现,data数组里面存储的第一个元素是一个空格,是的,你没有看错,因为字符串的split方法,当你以正则表达式或者字符串("@")分...

diyu8056的博客 356

YOLOv11涨点改进 | 首发全网创新、主干改进篇 | AAAI 2026 | PartialNet 主干让 YOLOv11 更加强大!引入部分通道机制 和 部分注意力卷积,全方面提升了模型的性能

本文提出PartialNet主干网络改进YOLOv11的方法,通过部分通道机制(PCM)和部分注意力卷积(PATConv)提升模型效率。PartialNet将特征图通道拆分并应用不同操作,显著减少计算量和内存占用。主要创新包括:1)部分通道机制实现计算优化;2)三种注意力模块(PATch/PATsp/PATsf)增强特征提取;3)动态部分卷积(DPConv)自适应调整计算复杂度。文章详细提供了代码实现和YOLOv11集成方法。

Ai缝合怪、助力小伙伴高效发论文 268

JAVA字符串的分割(有个坑)

永远奋斗,永远年轻,别停下你的脚步。

m0_62600503的博客 1213

SAP_PP模块中MRP中信号灯简介

一、信号灯的作用二、常见的信号灯颜色及含义三、信号灯的来源四、常见场景示例示例1:物料满足所有需求示例2:生产订单已延迟示例3:缺料或未产生计划订单五、相关事务码参考六、如何应对红色或黄色信号灯?七、前台操作说明在 SAP PP 模块中,**MRP(物料需求计划)运行结果中的“信号灯”是一种非常直观的可视化提示工具,用于帮助用户快速识别物料计划是否存在异常或需要关注的问题。这些信号灯通常出现在MD04(库存/需求清单)、MD05(单物料MRP清单)、MD07(MRP列表)**等事务代码的界面中。

我小时候很黑的博客 626

用 CL_ABAP_ZIP 在 ABAP 里打包任意文件:从前端多选到 ZIP 交付的一条龙实践

本文介绍了在SAP ABAP中实现文件打包交付的完整解决方案。文章首先区分了ZIP和GZIP的不同用途:ZIP用于多文件归档,GZIP用于单数据流压缩。核心流程包括四个步骤:文件选择、二进制上传、内存打包和ZIP输出,并提供了关键对象与函数的速查表。针对实际项目中常见的乱码、大文件处理等问题给出了解决方案,最后展示了一个完整的可运行示例代码,涵盖了从文件选择到下载的全流程实现。该方案适用于财务、质量、运维等多种业务场景,能够有效解决多文件交付的最后一公里问题。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 215

字符串使用split()方法截取时的空字符串问题

一、用例子来说明 1、单个分隔符占据第1个位置 @Test public void test() { String str = "_1"; String[] s = str.split("_"); for (int i = 0; i < s.length; i++) { System.out.println(s[i]); } } 结果: 1 注意: 1上面的空行中是一个空字符串,不是我打错了 2、多个分隔符连续占据最前面的多个位置 @Test pu

qq_42449963的博客 4691

S7-1200与ABB机器人进行SOCKET通信的具体方法示例

S7-1200与ABB机器人进行SOCKET通信的具体方法示例

Robot_PLC_HMI_Automation 3292

python的split函数切分字符串时为什么会产生空字符串

群里的一个小伙伴提了一个问题,他使用split函数切分字符串得到的结果里有空字符串,他对空字符串的出现感到困惑不解。 text = '1aa2' print(text.split('a')) # ['1', '', '2'] 这个空字符串是如何产生的呢?以a为分隔符切分时,我们认为两个a之间有一个空字符串,因此产生一个空字符串。 感觉很奇怪,但是很合理。如果不这样处理,那么结果就变成了 [‘1’, ‘2’],符合你的直觉,但这回导致一个尴尬的情况 text = '1aa2' print(tex

KWSY2008的专栏 2192

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java | split()方法详解以及split()后开头多出空字符串的原因分析

split()方法介绍 java.lang.string.split split()方法的作用是将一个字符串按照指定的分隔符分割为多个子字符串,然后将结果拼接为字符串数组返回。 测试Java代码 import java.util.Arrays; public class Test { public static void main(String[] args) { String str = ",1,"; String[] split = str.split(",

杰森写代码 2755

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Java中split()函数返回空字符串的笔记

split()函数的基本功能 根据给定正则表达式的匹配拆分此字符串。 先观察一些现象 请先阅读代码,并预测代码的结果。 第一段代码 public static void main(String[] args) { String s = "aba"; String[] strings = s.split("b"); System.out.println("strings.length = " + strings.length); for

weixin_43968383的博客 2071

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

String的split方法注意,空字符串问题

String的split方法返回的是一个String数组 意为 按照 “关键字” 分割 String字符串 注意的是: 分割之后的数组,会自动省略后面的空字符串,而不会省略前面的空字符串 代码: @Test public void test() { // a前面有两个空格,example后面有三个空格 // split方法,要是数组末尾都是 空字符串:"" 则舍...

shijiujiu33的博客 2065

java split空字符_浅谈String.split()遇到空字符串的几种情况

Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回字符串数组split 方法该方法的作用是:将一个字符串分割为子字符串,然后将结果作为字符串数组返回。stringObj.split([separator,[limit]])stringObj必选项。要被分解的 String 对象或文字,该对象不会被split方法修改。separator可选项。字符串或正则表达式对象,它标识...

weixin_39835321的博客 2696

String类中split()方法的使用

String类中split()方法的使用 今天在在使用split方法时,发现split()方法很怪异的现象,查询了官方文档和各种资料,总结如下 官方文档是这么介绍的: 大致意思就是 在给定的正则表达式来分割该字符串.此方法返回的数组包含此字符串的子字符串,每个子字符串都由另一个匹配给定表达式的子字符串终止,或者由此字符串末尾终止。数组中的子字符串按...

qq_41785135的博客 19万+

java String.split丢失结尾空字符串的问题

java中的split函数用于将字符串分割为字符数组是很方便的,但由于不是很熟悉,犯了错误 如下: String strtest = "1,2,"; String arry[] = strtest.split(","); 这样得到的数组元素个数只是2两个,为什么呢,最后一个","后没有内容,它没有作为空字符串成为第三个数组元素,结尾的空字符串被丢弃了! 这个函数还有另一种重载方式

zmscs的专栏 2770

Java之split()方法

Java之split()方法 1、方法介绍 (1)public String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串 (2)public String[] split(String regex,int limit) 根据匹配给定的正则表达式来拆分此字符串 2、方法实例 /** * @Title:Split.java *

游海东的技术专栏 5380

spilit切割字符串时 如果切割符在开头 会多出空格

在开发使用spilit切割字符串时 发现一个有趣的现象 若切割符在开头 则会多出一个空字符串 如果不需要那个字符串可使用StringUtils中的spilit进行切割,可去除空字符串 package com.zj.test; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; public class Test2 { public static void m...

weixin_41634885的博客 904

string.split()方法对空字符的处理

java中的split函数用于将字符串分割为字符数组是很方便的,但由于不是很熟悉,犯了错误 如下: String strtest = "1,2,"; String arry[] = strtest.split(","); 这样得到的数组元素个数只是2两个,为什么呢,最后一个","后没有内容,它没有作为空字符串成为第三个数组元素,结尾的空字符串被丢弃了! 这个函数还有另一

答案是肯定的 1万+

关于java.split出现空字符串的个人心得

spec:对一个String,要求用 非字母,“.”,“!” 的字符进行分割存到string[]里面 分隔符的正则表达式为 那就会有这样的奇葩句子 比如 1.“Ah! How fucking the spec is!@#*%@#$%” 结尾一堆分隔符,这样的话,如果用spilt得到的数组里面最后一个元素是is!,结尾那些分隔符不会产生空字符串(除非你设置参数使得那些能读出来) 2."@#...

weixin_41797880的博客 1489

java+set+split_Java中字符串split() 的使用方法

先看下面的方法,事先预测一下,经过split方法,按逗号进行分割为数组之后,生成的数组的长度是多少,目测很多人都觉得是8,但是结果却出乎意料。是5而不是8.private static void testSplit() { String ss = ",aa,bb,cc,dd,,,"; String[] array = ss.split(","); Sys...

weixin_35890512的博客 909

String split 对空字符的处理

开发时做字符串分割为数组时遇到这样的问题,分割符后是空串,没有作为元素存到数组中,如下: String name = "a,b,c,r,,,,"; String[] names1 = name.split(","); 期待得到的数组长度是8,结果得到的长度是4,因为结尾的空字符串都被丢弃了。 后来查到该方法还有一个重载,split(String regex, int limit) 可以解决...

Tracycater的专栏 1943
上一篇: 如何解决Git合并merge时的冲突(conflict)
下一篇: 自我提升篇之--张一鸣:我面试了2000个年轻人,混得好的都有这5种特质!
TylerDu
博客等级 码龄6年 10粉丝 32原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值