黑马程序员技术交流社区

标题: 字符串切割问题,求大神帮忙解答 [打印本页]

作者: Rorine    时间: 2015-3-24 23:37
标题: 字符串切割问题,求大神帮忙解答
以下两种情况如何解释。第一种:字符串全是相同的字符组成:

  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. }
复制代码
结果如下:



求解释。

作者: 有丶时候    时间: 2015-3-25 00:24
split()就好像是一根甘蔗,把每节之间的那一点点舍去,只留下汁水多的枝干,然后组成一个数组。如果字符串都是相同的字符组成并且要切割的也是这个字符,那就相当这根甘蔗完全没有可吃的部分。
额。第二种情况,好像用甘蔗也不好解释前面为什么会有2个空的。{:3_49:}
跪求楼下的大神解释啊。
作者: Hivan    时间: 2015-3-25 23:10
楼下来个大牛吧,看源码正则表达式搞不明白。
作者: lzhuas    时间: 2015-3-25 23:24
本帖最后由 lzhuas 于 2015-3-25 23:26 编辑

第一种情况肯定什么都没有啦,你全部都是cccc,又根据c来切割返回子串还有什么?对,连空格都没有。第二种情况是因为你中间有个a,它在第三为,也就是2了,还是根据c来切割返回子串,前面两个啥都没有,就是空咯,所以[ , ,a],就是你要的东西啦





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2