最近在项目中,发现了一个bug,充分了展示了自己对java底层的认知有很多的不足和欠缺。

下面有段代码:

String str="1#2#3";
String[] strs=str.split("#");
System.out.println(strs.length);

ok,上面这段代码最终输出结果是2,这没有问题,但是如果换成下面的写法呢,请看:

String str="##";
String[] strs=str.split("#");
System.out.println(strs.length);

结果输出是0,如果再换一种写法呢,请看:

String str="1##";
String[] strs=str.split("#");
System.out.println(strs.length);

结果输出是1,那么好了,如果我无论哪种情况都想要2怎么办,我写了这样一段转换的代码:

String str="##";
str=str.replaceAll("#", "v^#v^");
String[] strs=str.split("#");
for (int i = 0; i < strs.length; i++) {
String text=strs[i].replaceAll("v\\^", "");
if("".equals(text)){
  text="略";
}
System.out.println(text);
}

 结果: 

ok,问题完美解决。

java中使用split分割字符串一个有趣的现象的更多相关文章

  1. C#中使用split分割字符串的几种方法小结

    1.用字符串分隔: using System.Text.RegularExpressions;string str="aaajsbbbjsccc";string[] sArray= ...

  2. C#中使用split分割字符串的方法小结

    string s=abcdeabcdeabcde; string[] sArray=s.Split(c) ; foreach(string i in sArray) Console.WriteLine ...

  3. BUGFIX 09 - 记一次Java中String的split正则表达式匹配 - 引发`OutOfMemoryError: Java heap space`的oom异常 排查及解决 -Java根据指定分隔符分割字符串,忽略在引号里面的分隔符

    问题简述 说白了,Java根据指定分隔符分割字符串,忽略在引号(单引号和双引号)里面的分隔符; oom压测的时候,正则匹配"(?=(?:[^\"]*\"[^\" ...

  4. java关于split分割字符串,空的字符串不能得到的问题

    java关于split分割字符串,空的字符串不能得到的问题   class T { public static void main(String args[]) { String num[] = ne ...

  5. Java中的split函数的用法

    Java中的 split  函数是用于按指定字符(串)或正则去分割某个字符串,结果以字符串数组形式返回: 例如: String str="1234@abc"; String[] a ...

  6. PL/SQL实现JAVA中的split()方法的小例子

    众所周知,java中为String类提供了split()字符串分割的方法,所以很容易将字符串以指定的符号分割为一个字符串数组.但是在pl/sql中并没有提供像java中的split()方法,所以要想在 ...

  7. Java中如何把一下字符串转换成map

    首先,你先确认你的字符串是否是json格式的,如果是json格式,那你可以使用Gson.jar或json-lib-xx-jdk.jar两个包来自动解析解析. 使用Gson更简单些,只需要导入一个包就可 ...

  8. Java中XML格式的字符串4读取方式的简单比较

    Java中XML格式的字符串4读取方式的简单比较 1.java自带的DOM解析. import java.io.StringReader; import javax.xml.parsers.Docum ...

  9. JAVA中令人疑惑的字符串

    Java中不同的字符串存在于同一个存储池中,字符串变量将指向存储池中相应的位置,也就是字符串变量里面包含的并不是字符串而是这个字符串对象的内存地址. String a = "123" ...

随机推荐

  1. 在eclipse中配置python插件

    最好离线下载python的离线包.名字叫——org.python.pydev.feature-1.6.3.2010100513 此包里面有两个文件夹 features 和 plugins,分别把2包中 ...

  2. android resources使用总结

    http://developer.android.com/guide/topics/resources/more-resources.html http://developer.android.com ...

  3. jquery判断radioButton是否被选中

    so easy HTML: <input type='radio' style='width:20px' id='other' name='projectType' value='其他' /&g ...

  4. Python3操作MySQL,查询数据并保存到文件中

    我们在测试过程中,可能需要到数据库中拉去一些数据,为从测试准备.比如最近在做接口性能测试的时候,就需要很多数据来支撑,所以就需要的数据库去查询数据,下面就是python3 查询 mysql 并且保存到 ...

  5. sprint3(第九天)

    今天四六级考试,没做什么内容,添加了前台的菜单的图片 燃尽图

  6. 怎样计算一个整数的位数&并把每一位上的数字保存下来

    用循环来解决~~ M每次除以10, 再用一个变量count来计数,每循环一次 加1,直到这个数除去10后的数小于10 ,count再加1就可以了 实例:整数M=4325, 第一次:4325/10=43 ...

  7. ACCESS作为网站数据库的弊端

    现在网上绝大多数网站都是ACCESS+ASP的形式,因为ACCESS结构简单容易处理,而且也能满足多数的网站程序要求. ACCESS是小型数据库,既然是小型就有他根本的局限性,以下几种情况下数据库基本 ...

  8. FL2440驱动添加(1):hello world 驱动模块添加

    试试第一个hello world模块添加: 1,在添加drivers/char/hello.c /*************************************************** ...

  9. 我见过的几门语言中的hello world

    1.Java public class hello { public static void main(String[] args){ System.out.println("hello w ...

  10. ahjesus动态生成表达式树

    直接上方法,看的懂的拿去用,看不懂的找资料看懂 , , Double floorprice = , Double topprice = , string brandstr = "" ...