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