语法 1 2 3 4 5 6 7 8 9 10 11 public String [] split (String regex) # 或public String [] split (String regex, int [limit]) 参数: regex: 应用于字符串的正则表达式。 limit: 数组中字符串的数量限制。如果它为零,它将返回所有匹配正则表达式的字符串。 返回值: 字符串数组 例外:PatternSyntaxException 如果正则表达式的模式无效
功能 通过指定的分隔符将字符串分割成若干个子字符串,子字符串数组通过返回值返回。
示例 单个分隔符 字符串中仅包含单个分隔符,通过单个分隔符将字符串分割成若干个子字符串。
1 2 3 4 5 6 7 8 9 public class Test { public static void main (String[] args) { String str = "2020,text,今天" ; String[] data = str.split("," ); for (int i = 0 ; i < data.length; i++) { System.out.println(data[i]); } } }
运行结果:
特殊符号 . | * \ ] [
(点、竖、星号、斜线、中括号) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 public class Test { public static void main(String [] args) { String str = "asczscx.xsa" ; String [] split = str .split ("[.]" ); for (String s : split ){ System.out.println (s); } str = "asczscx|xsa" ; String [] split = str .split ("\\|" ); for (String s : split ){ System.out.println (s); } str = "asczscx*xsa" ; String [] split = str .split ("\\*" ); for (String s : split ){ System.out.println (s); } str = "asczscx\\xsa" ; String [] split = str .split ("\\\\" ); for (String s : split ){ System.out.println (s); } str = "asczscx[]xsa" ; String [] split = str .split ("\\[\\]" ); for (String s : split ){ System.out.println (s); } } }
上述输出均为:
指定字符串数量限制 字符串分割成若干个子字符串,限制子字符串的个数。
如果 limit > 0,(从左到右)最多分割 n - 1 次,数组的长度将不会大于 n,结尾的空字符串不会丢弃。
如果 limit < 0,匹配到多少次就分割多少次,而且数组可以是任何长度。结尾的空字符串不会丢弃。
如果 limit = 0,匹配到多少次就分割多少次,数组可以是任何长度,并且结尾空字符串将被丢弃。
示例:
将limit 设置为 0:这将排除尾随的空字符串。
将limit 指定为 1,因此 split 方法仅返回1个子字符串。
将limit 指定为 2,因此 split 方法仅返回2个子字符串。
当limit 为负数时,它会在输出中包含尾随的空字符串。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 public class Test { public static void main (String[] args) { String s1 = "hello/hi/bye///" ; for (String w : s1.split("/" , 0 )) { System.out.println("returning words1:" + w); } System.out.println("------------------" ); for (String w : s1.split("/" , 1 )) { System.out.println("returning words2:" + w); } System.out.println("------------------" ); for (String w : s1.split("/" , 2 )) { System.out.println("returning words3:" + w); } System.out.println("------------------" ); int i = 1 ; for (String w : s1.split("/" , -1 )) { System.out.print(i++ + ". " ); System.out.println(w); } } }
运行结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 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.
正则表达式表示分隔符 字符串中包含分隔符,通过正则表达式的形式确定分隔符,并通过分隔符将字符串分割成若干个子字符串。
在正则表达式中 \d+
表示一个或多个数字,是用于从一堆数字字母以及其它字符组成的字符串中获取非数字字符或字符串。
1 2 3 4 5 6 7 8 9 10 public class Test { public static void main (String[] args) { String str = "2018年11月18日abcd85gg688" ; String[] data = str.split("\\d+" ); for (int i = 0 ; i < data.length; i++) { System.out.println(data[i]); } } }
运行结果:
空格 字符串中包含空格分隔符,需要通过空格分隔符将字符串分割成若干个子字符串。
返回字符串中的所有单词,仅不包括空格。
1 2 3 4 5 6 7 8 9 10 public class Test { public static void main (String[] args) { String s1 = "java string split method" ; String[] words = s1.split(" " ); for (String w : words) { System.out.println(w); } } }
运行结果:
1 2 3 4 java string splitmethod
多个分隔符 字符串中包含多种分隔符,需要通过多种分隔符将字符串分割成若干个子字符串。
方式1.多个分隔符用引号括起来
方式2.多个分隔符用引号和中括号括起来
1 2 3 4 5 6 7 8 9 10 11 12 public class Test { public static void main (String[] args) { String str = "2021年11月18日;英语,数学,语文;" ; String[] data = str.split("[,;]" ); for (int i = 0 ; i < data.length; i++) { System.out.println(data[i]); } } }
运行结果:
大写字母拆分字符串 字符串中包含大写字母,需要通过将大写字母作为分隔符,将字符串分割成若干个子字符串。
1 2 3 4 5 6 7 8 9 10 11 12 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]); } } }
运行结果:
1 2 3 4 Number of substrings: 3 Str[0]:A Str[1 ]:B Str[2 ]:K $bb