java中split()在遇到空有时不能成功分隔
来源:互联网 发布:淘宝买家秀大尺度男 编辑:程序博客网 时间:2024/05/17 03:38
java中split()在遇到空有时不能成功分隔
Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回字符串数组
split 方法
该方法的作用是:将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
stringObj.split([separator,[limit]])
stringObj
必选项。要被分解的 String 对象或文字,该对象不会被split方法修改。
separator
可选项。字符串或正则表达式对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽略该选项,返回包含整个字符串的单一元素数组。
limit
参数控制模式应用的次数,因此影响所得数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n 为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。如果 n 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。
该方法的作用是:将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
stringObj.split([separator,[limit]])
stringObj
必选项。要被分解的 String 对象或文字,该对象不会被split方法修改。
separator
可选项。字符串或正则表达式对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽略该选项,返回包含整个字符串的单一元素数组。
limit
参数控制模式应用的次数,因此影响所得数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n 为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。如果 n 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。
遇到的问题是:
public class Split {public static void main(String args[]){String s = "1__________";String[] arraystr = s.split("_");for(int i=0;i<arraystr.length;i++){System.out.println("lulu ="+arraystr[i]);}}}结果是:
lulu =1
只能解析出第一个元素1,其他的都不能解析但是这样就都能解析出来了
public class Split {public static void main(String args[]){String s = "1__________9";String[] arraystr = s.split("_");for(int i=0;i<arraystr.length;i++){System.out.println("lulu ="+arraystr[i]);}}}结果是:
lulu =1
lulu =
lulu =
lulu =
lulu =
lulu =
lulu =
lulu =
lulu =
lulu =
lulu =9
lulu =
lulu =
lulu =
lulu =
lulu =
lulu =
lulu =
lulu =
lulu =
lulu =9
但是在实际开发的时候不能保证最后一个分隔符被分的字符串为不空,所以在用split()这个方法后再取被分隔的字符串数组的时候有时候就出现数据越界的问题(最后一个分隔符被分的字符串为空)
想到了一个方法是split([separator,[limit]]) ,后面把limit赋值成比该字符串被分隔成字符数组后数组的长度大很多的值,这能保证所有为空的都能被解析,这正应了api里的解释:如果该限制 n 大于 0,则模式将被最多应用 n - 1 次(此时n为1000)
public class Split {public static void main(String args[]){String s = "1__________";String[] arraystr = s.split("_",1000);for(int i=0;i<arraystr.length;i++){System.out.println("lulu ="+arraystr[i]);}}}
如果把limit设置为非正,也能全部解析如:
public class Split {public static void main(String args[]){String s = "1__________";String[] arraystr = s.split("_",-1);for(int i=0;i<arraystr.length;i++){System.out.println("lulu ="+arraystr[i]);}}}
1.当参数为整数的时候,只需要截取前几个,需要几个截取几个,这个不用多说。
Java代码
- String line = "aa,bb,cc,dd,,,," ;
- System.out.println(line.split( "," , 6 ).length);
- 输出结果为 6 ,limit参数指定几个,输出几个,最多为 8 个
Java代码
- String line = "aa,bb,cc,dd,,,," ;
- System.out.println(line.split( "," , 0 ).length);
- 输出结果为 4
Java代码
- String line = "aa,bb,cc,dd,,,," ;
- System.out.println(line.split( "," ,- 1 ).length);
- 输出结果为 8
注意:
1、如果用“.”作为分隔的话,必须是如下写法,String.split("\\."),这样才能正确的分隔开,不能用String.split(".");
2、如果用“|”作为分隔的话,必须是如下写法,String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");
2、如果用“|”作为分隔的话,必须是如下写法,String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");
0 0
- java中split()在遇到空有时不能成功分隔
- java 关于split分割字符串,空结果不能得到的问题,多个分隔符的处理
- Java中使用split分隔字符串
- ” Java中使用split分隔字符串
- java中split以"."分隔和以"\"分隔
- 在JAVA中, 在使用String.split方法时要注意的一些特殊分隔字符串
- java split 分隔符
- JAVA split分隔
- String.split() 分隔符不能保存后面的空字符串问题
- java中String对象的split方法不能得到空字符串的问题
- Java中split处理空串
- java中split使用应注意分隔符问题
- java中split()中的特殊分隔符 小数点
- java 中以||作为split分隔符正确的写法
- java 解决split分割空值不能得到的问题
- java 解决split分割空值不能得到的问题
- java split 空值
- 在XCode6中不能创建空项目?
- 基于centos7最小化安装的openstack环境搭建(1)
- BNU 22494 Kitchen Robot
- 第6回这莫不是传说中的Activity
- SqlServer性能检测和优化工具使用详细
- EditText挡住输入框问题的解决
- java中split()在遇到空有时不能成功分隔
- 如何在Ubuntu中安装最新版Eclipse
- OC与Swift混编
- 魔鬼赛程!巴萨遇史上最难半赛季 112天内23恶战
- 最长回文字符串_Manacher算法_(O(n))
- xmanger安装oracle调图形化界面报错解决方法
- 装饰设计模式(decorator design pattern)
- Android第三方实现微信支付
- CentOS 7下Authentication failure问题