java的String类中有个split方法,这个是我们经常使用到的,然而对于split,你了解多少。
split一共有两个方法,
①.public String[] split(String regex,int limit)
②. public String[] split(String regex )
先说第一个,有两个参数,api上的例子:
引用
public String[] split(String regex,int limit)
根据匹配给定的正则表达式来拆分此字符串。
此方法返回的数组包含此字符串的每个子字符串,这些子字符串由另一个匹配给定的表达式的子字符串终止或由字符串结束来终止。
数组中的子字符串按它们在此字符串中的顺序排列。如果表达式不匹配输入的任何部分,则结果数组只具有一个元素,即此字符串。
limit 参数控制模式应用的次数,因此影响结果数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后项将包含超出最后匹配的定界符的所有输入。
如果 n 为非正,则模式将被应用尽可能多的次数,而且数组可以是任意长度。如果 n 为零,则模式将被应用尽可能多的次数,数组可有任何长度,并且结尾空字符串将被丢弃。
例如,字符串 "boo:and:foo" 使用这些参数可生成下列结果:
Regex Limit 结果
: 2 { "boo", "and:foo" }
: 5 { "boo", "and", "foo" }
: -2 { "boo", "and", "foo" }
o 5 { "b", "", ":and:f", "", "" }
o -2 { "b", "", ":and:f", "", "" }
o 0 { "b", "", ":and:f" }
这种形式的方法调用 str.split(regex, n) 产生与以下表达式完全相同的结果:
Pattern.compile(regex).split(str, n)
参数:
regex - 定界正则表达式
limit - 结果阈值,如上所述
返回:
字符串数组,根据给定正则表达式的匹配来拆分此字符串,从而生成此数组
抛出:
PatternSyntaxException - 如果正则表达式的语法无效
其实上面说的已经很详细了,说到底就是比常用的多了一个limit参数。但是参数怎么用,在什么地方用。下面我举例子说明吧。
1.当参数为整数的时候,只需要截取前几个,需要几个截取几个,这个不用多说。
String line = "aa,bb,cc,dd,,,,";
System.out.println(line.split(",",6).length);
输出结果为6,limit参数指定几个,输出几个,最多为8个
2.当参数为零的时候,和split()一样,截图尽可能多的字符串(其实不是最多的)。
String line = "aa,bb,cc,dd,,,,";
System.out.println(line.split(",",0).length);
输出结果为4
3.当参数为负的时候,即使后面有空的串,也会输出到最大
String line = "aa,bb,cc,dd,,,,";
System.out.println(line.split(",",-1).length);
输出结果为8
可能大家都看出来了,以逗号切割的一般都是CSV格式的文件,当遇到读取每一行记录的时候,不加参数,就会遇到这种情况,读取不完整,然后CSV数据格式验证的时候,验证数据不合法。
String line = "aa,bb,cc,dd,,,,";
String mi[] = (line).split(sp);
if (mi.length != 8)return;
实际结果 mi.length = 4,所以通不过验证直接非法数据
所以只要加上参数以后,才可以使得程序正常运行下去,不然就只能走偏方了。
不知道吗?偏方嘛,就是给字符串最后先加个特殊符号,待切割以后,再将最后一个数组的特殊符号处理掉。
String line = "aa,bb,cc,dd,,,,";
String mi[] = (line+"-").split(sp);
if (mi.length != 8)return;
mi[7] = mi[7].split("-")[0];
②其实就是当limit参数为0的时候获得的结果,将api的介绍放上来,就不多说了。
引用
public String[] split(String regex)
根据给定的正则表达式的匹配来拆分此字符串。
该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,结果数组中不包括结尾空字符串。
例如,字符串 "boo:and:foo" 产生带有下面这些表达式的结果:
Regex 结果
: { "boo", "and", "foo" }
o { "b", "", ":and:f" }
参数:
regex - 定界正则表达式
返回:
字符串数组,根据给定正则表达式的匹配来拆分此字符串,从而生成此数组。
抛出:
PatternSyntaxException - 如果正则表达式的语法无效
分享到:
相关推荐
根据给定的文件信息,我们可以总结出以下关于 Delphi 分割字符串并去除空串的相关知识点。 ### Delphi 分割字符串并去除空串方法解析 #### 1. 函数定义及参数说明 函数名称:`SplitString` 所属类:`TForm1` ...
我们可以使用 Replace 函数将时间字符串中的某些字符替换为空串,以达到截取时间的目的。 例如,下面的 SQL 语句将当前时间截取为年、月、日的格式: ```sql SELECT REPLACE(REPLACE(REPLACE(CONVERT(varchar, ...
总结来说,由空格构成的串和空串在字符串处理中是两个独立的概念,而在二叉树和二叉查找树等数据结构中,我们关注节点的结构、遍历方法以及查找效率。这些基本概念构成了计算机科学中的基础,对于理解和操作数据至关...
这通常通过栈数据结构实现,先将操作数压入栈,遇到运算符时,将其与栈顶的操作数比较优先级并处理。 8. **算法分析**: 代码片段展示了递归调用的过程,用于处理特定的字符串格式,比如处理分隔符和操作符的匹配...
JAVA正则表达式是一种强大的字符串处理工具,自从JDK1.4开始,SUN公司就已经对其提供了支持。正则表达式可以实现多种功能,以下将会详细介绍四种常用的功能:查询、提取、分割和替换。 查询功能 查询是指在字符串...
在编译原理中,求解First集和Follow集是语法...通过上述Java代码的分析,可以看出其实现过程涉及字符串处理、集合操作以及算法逻辑,体现了编程解决复杂问题的能力。对于深入理解和应用编译原理具有重要的参考价值。
《编译原理 first follow java版》是一个专门针对Java编程语言实现的编译原理工具,它主要功能是计算和求解LL文法的first集合和follow集合。这些概念在编译器设计领域至关重要,理解并能实际操作它们对于深入学习...
如果读入的是空串,则抛出EmptyStringException异常;如果读入的内容中包含有数字,则抛出IncludeNumberException异常。 /*提示:程序中用到String的indexOf()方法,它返回所指定的字符在字符串中第一次出现的...
本文将详细介绍JavaScript中截取字符串的常用方法,包括substring()、split()、join()和indexOf(),以及substr()方法,这些都是JavaScript提供的字符串操作方法,用于帮助开发者从字符串中提取所需的部分。...
- **Jdk (Java Development Kit)**:Java开发工具包,包含了编译、运行Java程序所需的各种工具,例如`javac`(Java编译器)、`java`(Java解释器)以及其他辅助工具,比如调试器和文档生成工具等。 - **Jre (Java ...
Gson库可以自动处理Java对象与JSON格式之间的转换,但是默认情况下,所有的属性,无论其值是什么,都会被序列化进JSON字符串中,包括null值和空字符串。 然而,在大数据传输或存储到数据库的场景中,包含大量无意义...
- **JDK (Java Development Kit)**: JDK 是 Java 开发工具包的简称,它包含了编写 Java 应用程序所需的开发工具,如编译器(javac)、调试器(jdb)等,以及文档和其他资源。它是开发 Java 应用程序的基础,对于开发者来...
- 空串处理:在方法开始时检查输入字符串是否为空或仅包含空白字符,如果是,则返回`null`。 ### 2. 构造函数调用顺序 在给定的示例中,我们看到父类`FatherClass`和子类`ChildClass`的构造函数调用顺序。 #### ...
Python中有split()和os.path.split()两个函数: split():拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表。 os.path.split():将文件名和路径分割开。 1、split()函数 语法:str.split(str=...
在Spring MVC框架中,我们经常需要处理JSON数据,这些数据可能包含null值。在某些情况下,为了保持数据的整洁和避免后端处理null值时出现异常,我们需要在数据传输前过滤掉这些null值。本教程将详细介绍如何使用...
在Java实现过程中,可能需要使用数据结构如HashMap来存储和更新集合,以及队列或栈来处理递归关系。`complier`这个文件可能包含了实现这些功能的类和方法。 通过理解和计算一个文法的FIRST集和FOLLOW集,我们可以...
DateUtil.java代码,用于时间和日期操作的工具类,DateUtil类包含了标准的时间和日期格式,以及这些格式在字符串及日期之间转换的方法,格式化后的系统当前时间,如果有异常产生,返回空串"",转化日期格式"MM/dd/YY...
java 中的字符串处理是编程中最基本也是最重要的一部分,substring 和 substr 两个方法是 java 中最常用的字符串处理方法。在本文中,我们将详细介绍 substring 和 substr 两个方法的定义、用法、参数、返回值、说明...