Python 官方文档:入门教程 => 点击学习
目录前言一、split(regex,limit)二、split(regex)总结前言 博主针对字符串分割时出现的各种空字符串问题,进入String类的源码看了一下,现作如下解读及演示
博主针对字符串分割时出现的各种空字符串问题,进入String类的源码看了一下,现作如下解读及演示:
首先是带有两个参数的split方法:
作用:
将以给定正则表达式(regex)的字符串分隔开来
返回值:
此方法返回的数组包含此字符串的每个子字符串,这些子字符串以匹配到的正则表达式(就是以输入的第一个参数regex)作为结束,或由字符串的结尾作为结束。
注意事项:
public class test {
public static void main(String[] args) {
String str = ",,1,2,3,4"; // 注意这里字符串开头就匹配到了逗号
String[] s = str.split(",",10);// 这里先取10,后文介绍第二个参数
for (String string : s) {
System.out.println("子字符串"+string);
}
System.out.println(s.length);
}
}
运行结果:
第一个逗号前面会有出现一个空的子字符串
limit参数控制应用模式的次数,因此会影响结果数组的长度。(这里的意思就是limit的取值控制了结果数组的长度)
对以上解读如下: (1) 如果limit输入的是一个正数, 那么该模式将最多应用limit - 1次(就是说只会用输入的regex去字符串里面匹配limit-1次),数组的长度将不大于limit,并且数组的最后一个条目将包含最后一个匹配的分隔符之外的所有输入(就是说他分隔的模式是从前逐个往后的).给个代码便于大家理解:
public class test {
public static void main(String[] args) {
String str = "1,2,3,4";
String[] s = str.split(",",2);//这里输入limit为2,即分成2部分
for (String string : s) {
System.out.println("子字符串"+string);
}
System.out.println(s.length);
}
}
运行结果:
字符串被分隔成2个子字符串,分隔模式是从前往后的
(2) 如果输入的limit为零,则模式将被应用尽可能多的次数,结果数组可以有任何长度,而尾部的空字符串将被丢弃. (就是匹配字符串里面所有的regex分隔符),关于空字符串被丢弃,代码如下:
public class test {
public static void main(String[] args) {
String str = "1,2,3,4,,,";// 这里后面逗号之间的空字符串将被丢弃
String[] s = str.split(",",0);
for (String string : s) {
System.out.println("子字符串"+string);
}
System.out.println(s.length);
}
}
运行结果:
尾部的空字符串将不会出现在结果数组里
(3) 如果输入limit的值为负数,则模式将被应用尽可能多的次数,数组可以有任何长度。(尾部的空字符串也不会被丢失噢)
public class test {
public static void main(String[] args) {
String str = ",1,2,3,4,";
String[] s = str.split(",",-1);//limit值为负数
for (String string : s) {
System.out.println("子字符串"+string);
}
System.out.println(s.length);
}
}
运行结果:
字符串的尾部空字符串不会被丢失
接下来只带有一个参数的split方法就容易了,就是默认limit的值为0.
该方法的工作原理就是用给定regex参数和一个limit参数默认为0来调用两个参数的split方法。因此,结果数组中不包含尾随的空字符串。
到此这篇关于Java中String.split()的最详细源码解读及注意事项的文章就介绍到这了,更多相关java String.split()源码解读内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Java中String.split()的最详细源码解读及注意事项
本文链接: https://www.lsjlt.com/news/165265.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0