关于字符串的split方法的一些见解

同事今天向笔者提了一个字符串分割的问题,相信许多新手甚至参加工作数年的老鸟会感到奇怪,废话少说直接上实例代码。。。

String source = "1,2,,3,";
String[] strArr = source.split(",");
for (String str : strArr) {
    System.out.println("[" + str + "]");
}

运行上面一段代码,在控制台可以得到以下输出:

[1]
[2]
[]
[3]

此时,只想问下James Gosling,我的最后一个空字符串去哪了?

JDK的API上面对split方法有一段这样的描述:该方法调用的是split(regex, 0),而对split(regex, limit)的描述是:通过该方法返回的数组包含该字符串的每个子串,这些子串通过另一个指定的字符表达式或该字符串末尾终止。子串在数组中的顺序是它们在字符串中出现的顺序。如果表达式没有匹配输入字符串的任意部分,那么结果数组只有一个元素,及此字符串。limit参数控制模式被应用的次数,因此影响结果数组的长度。如果limit大于0,那么模式将最多被应用limit-1次,数组的长度不会大于limit,数组的最后一项将包含输入没有匹配的部分。如果limit是非正数,那么模式将尽可能的应用多次而数组会是任意长度。如果limit是0,尾随的空字符串会被丢弃。因此,如果你想要保留尾随的空串,第二个参数最好是负数。

将之前的代码修改为:

String source = "1,2,,3,";
String[] strArr = source.split(",", -1);
for (String str : strArr) {
    System.out.println("[" + str + "]");
}

再次运行,得到如下结果:

[1]
[2]
[]
[3]
[]
时间: 2024-10-11 18:37:31

关于字符串的split方法的一些见解的相关文章

sqlserver字符串拆分(split)方法汇总

--方法0:动态SQL法 declare @s varchar(100),@sql varchar(1000) set @s='1,2,3,4,5,6,7,8,9,10' set @sql='select col='''+ replace(@s,',',''' union all select ''')+'''' PRINT @sql exec (@sql) --方法1:循环截取法 if exists (select * from dbo.sysobjects where id = object

string.split()与re.split()方法区别

re模块的split()方法与字符串的split()方法相似,前者是根据 正则表达式模式 分隔字符串,后者是根据 固定的字符串 分割,因此与后者相比,显著提升了字符分割的能力. 如果分隔符没有使用由特殊符号表示的正则表达式来匹配多个模式,那 re.split()和 string.split()的执行过程是一样的. string.split()与re.split()方法区别,布布扣,bubuko.com

Python split()方法

描述 Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则仅分隔 num 个子字符串 语法 split() 方法语法: str.split(str="", num=string.count(str)). 参数 str -- 分隔符,默认为所有的空字符,包括空格.换行(\n).制表符(\t)等. num -- 分割次数. 返回值 返回分割后的字符串列表. 实例 以下实例展示了split()函数的使用方法: #!/usr/bin/python str

split()方法

split()方法 描述 split()通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则仅分隔 num+1 个子字符串 语法 split()方法语法: str.split(str="", num=string.count(str)) 参数 str -- 分隔符,默认为所有的空字符,包括空格.换行(\n).制表符(\t)等. num -- 分割次数.默认为 -1, 即分隔所有. 返回值 返回分割后的字符串列表. 实例 以下实例展示了split()函数的使用方法: str =

20190120-自定义实现split方法

1. 实现字符串的split方法Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串 思路同自定义实现replace方法类型: 1.先找出字符串中指定分隔字符的index,考虑可能出现多次的情况使用一个列表split_str_index存储分隔字符的index 2.使用result列表存储分隔后的字符串列表 3.当index不在split_str_index中的的时候拼接字符串,当index在split_str_index中的的

文章生成器,Split方法截取字符串。从硬盘读取文件,和向硬盘存储文件参考代码

string x, y; private void button2_Click(object sender, EventArgs e) { textBox2.Clear(); if (button4.Enabled == false) { string[] shuzu = y.Split(new char[]{'.'}); //用split方法截取字符串 string news = ""; // 将截取字符串后的语句打乱顺序 for (int i = 0; i < shuzu.L

字符串、数组方法实战--charAt(),split(),indexOf(),substring()

这篇随笔根据两个面试题来实战一下数组.字符串的一些方法. 题一:一个字符串中找出出现次数最多的字符次数 1 var str = 'fuuhuhuhufaihuhfnkjNKCNIO';? 2 function num(str) { 3 var json = {}; 4 for (var i = 0; i < str.length; i++){ 5 //字符串的charAt()方法返回指定位置的字符串 6 if(!json[str.charAt(i)]){//若json对象中没有当前属性,则给当前

使用Split或Split方法来创建字符串数组

是对状态栏中网络激活那个小控件的管理.在平时的开发中,我们很可能忽略了它的存在.然而,实现对它的管理,让我们的APP更符合人机交互,不也是件大快人心的事儿吗. 在linux下每一个文件和目录都有自己的访问权限,访问权限确定了用户能否访问文件或者目录和怎样进行访问.最为我们熟知的一个文件或目录可能拥有三种权限,分别是读.写.和执行操作,在这里不做详细说明.我们创建一个文件后系统会默认地赋予所有者读和写权限.当然我们也可以自己修改它,添加自己需要的权限. 无论是提交还是传递数据,表单元素在动态交互页

不同浏览器下js的字符串split方法的差异

嘛,最近在各种直接拿代码调试,发现的问题可能稍微多了一点,姑且都记下来,这个随笔以后可能会不定期更新,因为相信不同浏览器之间各种差异还是很多的. 直接上代码 1 <html> 2 <head> 3 </head> 4 5 <body> 6 <script> 7 var str = "/part1/part2"; 8 var _list = str.split(/[\\/]/); 9 for(var i = 0; i <