String strs[] = "SS1BB2CC3".split("\\D+");

     public static String Test(){
Date d = new Date(milli);
String strs[] = "SS1BB2CC3".split("\\D+"); for (int i = 0; i < strs.length; i++) {
System.out.println(strs[i]); }
return null;
}

结果如下

1
2
3

在1上面有一个看不见的空串。

大概可以猜测得到,split的行为,比如下面有一个串:

",1,2,3".split(",");

结果是

""

1

2

3

只能说,这行为太jb傻了吧!无法忍受!算法思路可能是遇到,就把前面的元素扔进数组里,前面没元素就扔个空串进去!最后的3右边没有,就默认当成最后一个字符串扔进数组里。

第一次遍历串“,1,2,3”       数组:

第二次遍历串“1,2,3”          数组:“”

第三次遍历串“2,3”               数组:“”  1

第四次遍历串“3”                     数组:“” 1 2

遍历完毕                                数组:“” 1 2 3

解决方法是,用于切割的字符左边不能没有元素 ,如果有需要加多个判断:

if (strs[0] == "" ) {
do something;
} else {
do something;
}

这也完美解析了为什么用","切割,遇到"1,,,,2"会出现3个空串,它的思维是递归的,把第一个,左边元素扔进数组,整个串下一次就变成了",,,2",这时第一个逗号左边没有元素,就扔个空串进数组。解决方法如下:

把","替换成",+",这样遇到一个","或者",,,"都会看成一个整体X,"1,2"和"1,,,2"都会被看成"1X2","," = ",,," = X,以X切割,X左边的元素是1,就把1扔进数组里,下一次串就变成"2",最后的元素没有切割符号直接扔数组里。于是strs = [1,2]而不是[1,"","","",2]。

Java字符串的split(String str)方法空串的问题的更多相关文章

  1. java字符串格式化:String.format()方法的使用

    转自:http://kgd1120.iteye.com/blog/1293633 常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的读者应 ...

  2. Java字符串连接的多种实现方法及效率对比

    JDK 1.8(Java 8)里新增String.join()方法用于字符串连接.本文基于<Java实现String.join()和效率比较>一文,分析和比较四种自定义实现与String. ...

  3. Java 字符串分隔 split

    Java中的我们可以利用 split 方法(Java.lang.string.split)把字符串按照指定的分割符进行分割,然后返回字符串数组,下面是string.split的用法实例及注意事项. s ...

  4. Java字符串池(String Pool)深度解析

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 在工作中,String类是我们使用频率非常高的一种对象类型.JVM为了提升性能和减少内存开销,避免字符串的重复创建,其维护了一块特殊的内存 ...

  5. Java字符串池(String Pool)深度解析(转)

    出自  http://www.cnblogs.com/fangfuhai/p/5500065.html 在工作中,String类是我们使用频率非常高的一种对象类型.JVM为了提升性能和减少内存开销,避 ...

  6. 理解Java字符串常量池与intern()方法

    String s1 = "Hello"; String s2 = "Hello"; String s3 = "Hel" + "lo ...

  7. Java字符串比较(3种方法)以及对比 C++ 时的注意项

    字符串比较是常见的操作,包括比较相等.比较大小.比较前缀和后缀串等.在 Java 中,比较字符串的常用方法有 3 个:equals() 方法.equalsIgnoreCase() 方法. compar ...

  8. Java中区别.toString() ,(String),valueOf()方法

    在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结.常用的方法有Object.toString(),(String)要转换的对象,St ...

  9. 字符串对比.net String.EndsWith方法 (String)

    string str="web/abc.aspx"; if(str.EndsWith("abc.aspx")) { 此方法将 value 与位于此实例末尾.与 ...

随机推荐

  1. java.lang.NoClassDefFoundError:org/hamcrest/SelfDescribing

    1.错误描述 java.lang.NoClassDefFoundError:org/hamcrest/SelfDescribing 2.错误原因 将junit-4.11.jar导入到lib目录中,出现 ...

  2. 动态规划 POJ3616 Milking Time

    #include <iostream> #include <cstdio> #include <algorithm> using namespace std; st ...

  3. IOS开发之XCode学习008:UIViewController基础

    此文学习来源为:http://study.163.com/course/introduction/1002858003.htm 红色框选部分用A代替,AppDelegate类在程序框架启动时,如果在i ...

  4. 使用WebApiClient请求和管理Restful Api

    前言 本篇文章的内容是WebApiClient应用说明篇,如果你没有了解过WebApiClient,可以先阅读以下相关文章: WebApi client 的面向切面编程 我来给.Net设计一款Http ...

  5. js中的回调函数的理解

    一,常见的但是不是特别注意的回调方法. 1.1,ajax $.ajax({ url:"test.json", type: "GET", data: {usern ...

  6. MvcHtmlString解决MVC中从后台返回HTML代码被编码问题

    (1) 要得到的效果 <a class="easyui-linkbutton" data-options="iconCls:'icon-add'" id= ...

  7. 【深入理解JVM】类加载器与双亲委派模型

    原文链接:http://blog.csdn.net/u011080472/article/details/51332866,http://www.cnblogs.com/lanxuezaipiao/p ...

  8. webpack学习(二):先写几个webpack基础demo

    一.先写一个简单demo1 1-1安装好webpack后创建这样一个目录: 1-2:向src各文件和dist/index.html文件写入内容: <!DOCTYPE html> <h ...

  9. FFT\NTT总结

    学了好久,终于基本弄明白了 推荐两个博客: 戳我 戳我 再推荐几本书: <ACM/ICPC算法基础训练教程> <组合数学>(清华大学出版社) <高中数学选修> 预备 ...

  10. (luogu P4012)深海机器人问题 [TPLY]

    网页链接 https://www.luogu.org/problemnew/show/4012 做题背景 在不久的将来,人工智能发展使得人类大量失业,也使得现在的我们做[深海机器人问题]做得想死... ...