Bootstrap
本文主要介绍Java中利用split()方法将字符串拆分成多个子字符串的方法。

1、split()方法

public String[] split(String regex)
public String[] split(String regex, int limit)

regex:参数是正则达式,一般情况下,分割字符串参考字符串就行,不用考虑正则表达式。
limit:分割的子字符串的个数,例如,

String str= "boo:and:foo";
//输出[boo, and:foo]
System.out.println(java.util.Arrays.toString(str.split(":",2)));
//输出[boo, and, foo]
System.out.println(java.util.Arrays.toString(str.split(":",5)));
//输出[boo, and, foo]
System.out.println(java.util.Arrays.toString(str.split(":",-2)));
//输出[b, , :and:f, , ]
System.out.println(java.util.Arrays.toString(str.split("o",5)));
//输出[b, , :and:f, , ]
System.out.println(java.util.Arrays.toString(str.split("o",-2)));
//输出[b, , :and:f]
System.out.println(java.util.Arrays.toString(str.split("o",0)));

2、split()方法使用的特殊情况

1)分割拆分字符串进传入的参考字符串是正则表达式中的元字符

\ ^ $ . | ? * + ( [ {

如果字符串包含$ ,用$进行分割,例如,可以使用如下3种方法,

String str= "boo$and$foo";
//使用正则表达式
System.out.println(java.util.Arrays.toString(str.split("[$]")));
//利用Pattern.quote()转义成普通字符
System.out.println(java.util.Arrays.toString(str.split(Pattern.quote("$"))));
//通过\\进行转义
System.out.println(java.util.Arrays.toString(str.split("\\$")));

必要时还要做一下判断一参考字符是否存在:

if (string.contains("$")) {
    // Split it.
} else {
    throw new IllegalArgumentException("String " + string + " does not contain $");
}

2)如果需要保留参考字符

例如,有个字符串"0431-87534433",分割拆分之后,"-"需要保留在子字符串中:

//保留在后面子字符串中
String string = "0431-8753";
String[] parts = string.split("(?<=-)"); //?<=:正则表达式,反向肯定预查
String part1 = parts[0]; // 0431-
String part2 = parts[1]; // 8753
//保留在前面子字符串中
String string = "0431-8753";
String[] parts = string.split("(?=-)"); //?=:正则表达式,正向肯定预查
String part1 = parts[0]; // 0431
String part2 = parts[1]; // -8753