A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Rorine 中级黑马   /  2015-3-24 23:37  /  1893 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

以下两种情况如何解释。第一种:字符串全是相同的字符组成:

  1. public class StringTest3 {
  2.         public static void main(String[] args) {
  3.                
  4.                 String str = "cccccc";
  5.                 String[] arr = str.split("c");
  6.                 System.out.println("arr.length="+arr.length);

  7.                 System.out.print("arr=[");
  8.                 for (int i = 0; i < arr.length; i++) {
  9.                         if (i == arr.length - 1) {
  10.                                 System.out.print(arr[i] + "]");
  11.                         } else
  12.                                 System.out.print(arr[i] + ",");
  13.                 }
  14.         }
  15. }
复制代码
输出结果如下:





第二种情况:字符串中插入一个别的字符。
  1. public class StringTest3 {
  2.         public static void main(String[] args) {
  3.                
  4.                 String str = "ccacccc";
  5.                 String[] arr = str.split("c");
  6.                 System.out.println("arr.length="+arr.length);

  7.                 System.out.print("arr=[");
  8.                 for (int i = 0; i < arr.length; i++) {
  9.                         if (i == arr.length - 1) {
  10.                                 System.out.print(arr[i] + "]");
  11.                         } else
  12.                                 System.out.print(arr[i] + ",");
  13.                 }
  14.         }
  15. }
复制代码
结果如下:



求解释。

3 个回复

正序浏览
本帖最后由 lzhuas 于 2015-3-25 23:26 编辑

第一种情况肯定什么都没有啦,你全部都是cccc,又根据c来切割返回子串还有什么?对,连空格都没有。第二种情况是因为你中间有个a,它在第三为,也就是2了,还是根据c来切割返回子串,前面两个啥都没有,就是空咯,所以[ , ,a],就是你要的东西啦
回复 使用道具 举报
楼下来个大牛吧,看源码正则表达式搞不明白。
回复 使用道具 举报
split()就好像是一根甘蔗,把每节之间的那一点点舍去,只留下汁水多的枝干,然后组成一个数组。如果字符串都是相同的字符组成并且要切割的也是这个字符,那就相当这根甘蔗完全没有可吃的部分。
额。第二种情况,好像用甘蔗也不好解释前面为什么会有2个空的。{:3_49:}
跪求楼下的大神解释啊。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马