您的位置:首页 > 编程语言 > Java开发

关于java中String方法split的理解

2013-10-24 15:02 381 查看
昨天用split,有点疑问,于是就好好研究了下,先看以下代码:

 

String str1 = "50|101004|303110345112305|ZF230008|00||";
String str2 = "50|101004|303110345112305|ZF230008|00";
String str3 = "50|101004|303110345112305|ZF230008|00|";
String[] n1 = str1.split("\\|",-1);
String[] n2 = str2.split("\\|");
String[] n3 = str3.split("\\|");
System.out.println(n1.length);
System.out.println(n2.length);
System.out.println(n3.length);


这里要注意的一个点,分隔符为“.”(无输出),“|”(不能得到正确结果)转义字符时,“*”,“+”时出错抛出异常,都必须在前面加必须得加"//",如split(//|);

这里n1的长度7,n2的长度是5,n3的长度也是5.这个时候就需要看JDK源码了。

public
String[] split(String regex,  int limit)

limit 参数控制模式应用的次数,因此影响结果数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于
n,而且数组的最后项将包含超出最后匹配的定界符的所有输入。如果 n 为非正,则模式将被应用尽可能多的次数,而且数组可以是任意长度。如果
n 为零,则模式将被应用尽可能多的次数,数组可有任何长度,并且结尾空字符串将被丢弃。

而public
String[] split(String regex) 是吧limit是默认为0 了。

现在大家知道了会把空字符串丢弃了,所以长度为5!!

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java string 源码