1.split()方法介绍
语法:
public String[] split(String regex)
public String[] split(String regex, int limit)
功能:
通过指定的分隔符将字符串分割成若干个子字符串,子字符串数组通过返回值返回。
参数:
regex : 应用于字符串的正则表达式。
limit :数组中字符串的数量限制。如果它为零,它将返回所有匹配正则表达式的字符串。
返回值:
字符串数组
例外: PatternSyntaxException 如果正则表达式的模式无效
2.代码案例
2.1 单个分隔符
字符串中仅包含单个分隔符,通过单个分隔符将字符串分割成若干个子字符串。
public class Test { public static void main(String[] args) { String str = "2018,text,今天"; // 单个分隔符用引号括起来即可 String[] data = str.split(","); for (int i = 0; i < data.length; i++) { System.out.println(data[i]); } }}
运行结果:
2018
text
今天
2.2 如果分隔符本身就是"|",那么就需要使用转义字符"\"让其产生效果。
字符串中包含"|"分隔符,需要通过"|"分隔符将字符串分割成若干个子字符串。
public class Test { public static void main(String[] args) { String str = "a|bc|8"; // java中\\表示一个普通\,\|特殊字符表示字符本身 String[] data = str.split("\\|"); for (int i = 0; i < data.length; i++) { System.out.println(data[i]); } }}
运行结果:
a
bc
8
2.3 字符串拆分为字符数组
将字符串分隔成单个字符数组。
方式1.用"|"
方式2.用"(?!^)"
如下所示:
public class Test { public static void main(String[] args) { String str = "a|bc|8"; // 方式1.java中\\表示一个普通\,\|特殊字符表示字符本身 String[] data = str.split("|"); // 方式2.用"(?!^)"也能表示字符本身 // String[] data = str.split("(?!^)"); for (int i = 0; i < data.length; i++) { System.out.println(data[i]); } }}
运行结果:
a
|
b
c
|
8
2.4 指定字符串数量限制
字符串分割成若干个子字符串,限制子字符串的个数。
如果 limit > 0,(从左到右)最多分割 n - 1 次,数组的长度将不会大于 n,结尾的空字符串不会丢弃。
如果 limit < 0,匹配到多少次就分割多少次,而且数组可以是任何长度。结尾的空字符串不会丢弃。
如果 limit = 0,匹配到多少次就分割多少次,数组可以是任何长度,并且结尾空字符串将被丢弃。
将limit 设置为 0:这将排除尾随的空字符串。
将limit 指定为 1,因此 split 方法仅返回1个子字符串。
将limit 指定为 2,因此 split 方法仅返回2个子字符串。
当limit 为负数时,它会在输出中包含尾随的空字符串。
public class Test { public static void main(String[] args) { String s1 = "hello/hi/bye///"; for (String w : s1.split("/", 0)) { // 将limit 设置为 0:这将排除尾随的空字符串。 System.out.println("returning words1:" + w); } System.out.println("------------------"); for (String w : s1.split("/", 1)) { // 将limit 指定为 1,因此 split 方法仅返回1个子字符串。 System.out.println("returning words2:" + w); } System.out.println("------------------"); for (String w : s1.split("/", 2)) { // 将limit 指定为 2,因此 split 方法仅返回2个子字符串。 System.out.println("returning words3:" + w); } System.out.println("------------------"); int i = 1; for (String w : s1.split("/", -1)) { // 当limit 为负数时,它会在输出中包含尾随的空字符串。 System.out.print(i++ + ". "); System.out.println(w); } }}
运行结果:
returning words1:hello
returning words1:hi
returning words1:bye
------------------
returning words2:hello/hi/bye///
------------------
returning words3:hello
returning words3:hi/bye///
------------------
1. hello
2. hi
3. bye
4.
5.
6.
2.5 正则表达式表示分隔符
字符串中包含分隔符,通过正则表达式的形式确定分隔符,并通过分隔符将字符串分割成若干个子字符串。
在正则表达式中"\d+"表示一个或多个数字,是用于从一堆数字字母以及其它字符组成的字符串中获取非数字字符或字符串。
public class Test { public static void main(String[] args) { String str = "2018年11月18日abcd85gg688"; //正则表达式中\d+表示一个或多个数字,java中\\表示一个普通\ String[] data = str.split("\\d+"); for (int i = 0; i < data.length; i++) { System.out.println(data[i]); } }}
运行结果:
年
月
日abcd
gg
2.6 空格
字符串中包含空格分隔符,需要通过空格分隔符将字符串分割成若干个子字符串。
返回字符串中的所有单词,仅不包括空格。
public class Test { public static void main(String[] args) { String s1 = "java string split method"; // String[] words = s1.split("\\s"); String[] words = s1.split(" ");//两种方法都可以,根据空格拆分字符串 for (String w : words) { System.out.println(w); } }}
运行结果:
java
string
split
method
2.7 多个分隔符
字符串中包含多种分隔符,需要通过多种分隔符将字符串分割成若干个子字符串。
方式1.多个分隔符用引号括起来
方式2.多个分隔符用引号和中括号括起来
public class Test { public static void main(String[] args) { String str = "2021年11月18日;英语,数学,语文;"; // 方式1.多个分隔符用引号括起来,并且用“|”进行分割 // String[] data = str.split(",|;"); // 方式2.多个分隔符用引号和中括号括起来 String[] data = str.split("[,;]"); for (int i = 0; i < data.length; i++) { System.out.println(data[i]); } }}
运行结果:
2021年11月18日
英语
数学
语文
2.8 大写字母拆分字符串
字符串中包含大写字母,需要通过将大写字母作为分隔符,将字符串分割成若干个子字符串。
public class Test { public static void main(String[] args) { String s = "AB#K$bb"; String[] str = s.split("(?=\\p{Lu})"); System.out.println("Number of substrings: " + str.length); for (int i = 0; i < str.length; i++) { System.out.println("Str[" + i + "]:" + str[i]); } }}
运行结果:
Number of substrings: 3
Str[0]:A
Str[1]:B#
Str[2]:K$bb