(1)空字符串作为分隔符
public static void main(String[] args) {
String str="abc* def";
String[] splits = str.split("");
for (String string : splits) {
System.out.println(string);
}
}
结果:
有多少个字符,就被分割成几份。
(2)单个空格作为分隔符
public static void main(String[] args) {
String str="abc* def";
String[] splits = str.split(" ");
for (String string : splits) {
System.out.println(string);
}
}
结果:
(3)特殊分隔符需要转义
采用’*’作为分隔符,代码示例:
public static void main(String[] args) {
String str="abc* def";
String[] splits = str.split("*");
for (String string : splits) {
System.out.println(string);
}
}
结果抛出异常:
类似*,[,],{,},|,.这些特殊字符需要转义。使用双反斜杠进行转义,例如使用‘\[’对‘[’进行转义
public static void main(String[] args) {
String str="abc* def";
String[] splits = str.split("\\*");
for (String string : splits) {
System.out.println(string);
}
}
结果:
(3)多个分隔符怎么处理呢?多个字符之间用‘|’隔开
看例子:
public static void main(String[] args) {
String str="hello *n*&{ 7%world";
//以'*'和'&'作为分隔符,对'*'需要进行转义
String[] splits = str.split("\\*|&");
for (String string : splits) {
System.out.println(string+"-");
}
}
结果:
(4)如果以空格作为分隔符,但是空格的个数不确定,可能1个空格,2个空格,多个空格,还有可能是tab制表符,那么该怎么办呢?
public static void main(String[] args) {
//bc和mn7之间采用的是2个制表符tab
String str="a 4 bc mn7 he";
//使用单个空格作为分隔符
String[] splits = str.split(" ");
for (String string : splits) {
System.out.println(string+"-");
}
}
结果:
显然,上面的结果并非我们想要的。该怎么处理呢?
使用”\\s+”作为分隔符
public static void main(String[] args) {
String str="a 4 bc mn7 he";
//使用"\\s+"作为分隔符
//能够完美解决多个空格或tab制表符的问题
String[] splits = str.split("\\s+");
for (String string : splits) {
System.out.println(string+"-");
}
}
运行结果:
(5)如果要提取出所有的英文单词呢?怎么办呢?
思路:以所有英文字符之外的字符作为分隔符。
public static void main(String[] args) {
String str="hello *N*&{ 7%world";
//"[a-zA-Z]"表示以a-z,A-Z作为分隔符
//"[^a-zA-Z]"表示以a-z,A-Z之外的字符作为分隔符
//"[0-9]"表示以0-9作为分隔符
String[] splits = str.split("[^a-zA-Z]");
for (String string : splits) {
if(string.length()!=0){
System.out.println(string);
}
}
}
str.split(“[^a-zA-Z0-9]”);//表示以(a-z,A-Z,0-9)以外的字符作为分隔符
str.split(“[a-zA-Z0-9]”);//表示以(a-z,A-Z,0-9)作为分隔符
运行结果: