String.split()结尾空字符串将被丢弃
2016-03-23 14:28
344 查看
测试
测试结果
问题:#号中间的空无法获取?(官方解释)
split(String regex, int limit)方法,头一个参数String regex表示字符串分割的模式,包括分隔符和正则表达式;但是第二个参数limit比较迷糊人,api中这样解释:
limit 参数控制模式应用的次数,因此影响所得数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n 为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。如果 n 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。
解决
将String[] split = str.split("#");改为String[] split = str.split("#",-1);(其实第二个参数只要是负数就可以)
String str="1#2#3############"; String[] split = str.split("#"); for (String string : split) { System.out.println("str "+string); }
测试结果
str 1 str 2 str 3
问题:#号中间的空无法获取?(官方解释)
split(String regex, int limit)方法,头一个参数String regex表示字符串分割的模式,包括分隔符和正则表达式;但是第二个参数limit比较迷糊人,api中这样解释:
limit 参数控制模式应用的次数,因此影响所得数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n 为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。如果 n 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。
解决
将String[] split = str.split("#");改为String[] split = str.split("#",-1);(其实第二个参数只要是负数就可以)
相关文章推荐
- Fragment详解(二):Fragment 与支持库
- Go时间格式化和类型互换操作
- PowerDesigner建模经验
- 关于IOS我要学的d
- Jedis 操作
- wait与waitpid
- Tags Layers
- 25. Reverse Nodes in k-Group
- 最强正则表达式
- iOS 分类(category)、扩展(Extension)
- 306. Additive Number
- jquery鼠标悬停时的放大图片的图片提示效果
- NOIp 2010 导弹拦截
- JSON.parse()方法
- 队列—队列的存储实现及运算实现
- SharePoint2013 IT Professional - Permission
- Redis命令总结
- Linux文件的打包与压缩
- 理解HTTP幂等性
- Android开发下遇到的一些奇葩问题处理