形式:public String[ ] split (String regex)
作用:以regex作为分隔符分离字符串。
使用:
//1.以字符串作为分隔 String regex ="e"; String S ="hello"; String [] r=S.split(regex);//结果为分隔为r[0] ="h",r[1]="llo"; //2.以字符直接使用 String S ="hello"; String []r=S.split("e");//结果为分隔为r[0] ="h",r[1]="llo"; //3.正则表达式 String S ="asd1asd"; String regex="[\\d]" //上//d代表任何一个0-9的数字 String []r =S。split(regex);//结果为r[0] ="asd",r[1]="asd";
split()方法认为分隔标记的左右两边都是单词。
如果左面不含任何字符的字符序列(长度为0的字符序列,即“”),
也认为是一个单词,但右边必须是含字符的字符序列。
辨别:
// 1.输入为:aaa String a =r.next(); String []text=a.split("a"); System.out.println(text.length);//输出:0 //左右两边都是空字符序列,不分配空间. for(int i=0;i<text.length;i++){ System.out.println(text[i]);//不输出 }
// 2.输入为:ab String a =r.next(); String []text=a.split("a"); System.out.println(text.length);//输出:2 //形式为:| a b 以a为分隔符,|代表 "" 即 空字符序列。 // 左边都是空字符序列,右边有字符序列,分隔字符。 for(int i=0;i<text.length;i++){ System.out.println(text[i]); // 输出: // b //输出后面是空字符"";
// 3.输入为:aab String a =r.next(); String []text=a.split("a"); System.out.println(text.length);//输出:3 //形式为: | a | a b 以a为分隔符,|代表 "" 即 空字符序列。 //原因同上。只有右边有字符序列就分隔。 //每一个分隔字符“a”的两边都分配为“”,除了旁边为普通字符的分隔字符 //如: ab 左边为"";而右边为"b"; for(int i=0;i<text.length;i++){ System.out.println(text[i]); // 输出: // // b //输出后面是空字符""; }
// 4.输入为:aaba String a =r.next(); String []text=a.split("a"); System.out.println(text.length);//输出:3 //形式为: | a | a b 以a为分隔符,|代表 "" 即 空字符序列。 //当分隔字符"a"作为末尾字符的时候不发挥分隔作用。 for(int i=0;i<text.length;i++){ System.out.println(text[i]); // 输出: // // b //输出后面是空字符""; }
// 5.输入为:baaaa String a =r.next(); String []text=a.split("a"); System.out.println(text.length);//输出:1 //形式为:b // 当分隔字符"a"的右边是空的字符序列时,连着的分隔字符序列都不发挥分隔作用。 //无论后面多少个分隔字符都不分隔。 for(int i=0;i<text.length;i++){ System.out.println(text[i]); // 输出:b }
总结上文:我们可以发现:
1.只要分隔字符右边是有字符的字符序列,左边的每个分隔字符两边都发挥分隔作用。
如果分隔字符旁边没有{有字符的字符序列}就产生"",(空的字符序列)。
2.只要分隔字符的右边是空的字符序列,就都不发挥分隔作用。