String.split()方法我们会经常使用到,这个方法可以将一个字符串分割成数组,但是最近在使用的时候发现一个问题,代码如下:

     String str1 = "1";String[] arr1 = str1.split(",");System.out.println("arr1.length=" + arr1.length);for (String s : arr1) {System.out.println(s);}String str2 = "1,";String[] arr2 = str2.split(",");System.out.println("arr2.length=" + arr2.length);for (String s : arr2) {System.out.println(s);}String str3 = "1,2";String[] arr3 = str3.split(",");System.out.println("arr3.length=" + arr3.length);for (String s : arr3) {System.out.println(s);}

输出为:

arr1.length=1
1
arr2.length=1
1
arr3.length=2
1
2

在截取字符"1,"的时候只截取了一位,忽略了末尾的",",查看API之后发现这个方法是如下定义的

split 方法
    将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
stringObj.split([separator,[limit]])
stringObj
    必选项。要被分解的 String 对象或文字,该对象不会被split方法修改。
separator
    可选项。字符串或正则表达式对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽略该选项,返回包含整个字符串的单一元素数组。
limit
    可选项。该值用来限制返回数组中的元素个数(也就是最多分割成几个数组元素,只有为正数时有影响)

平时一般都用split(String regex)方法,其实也就等同于split(String regex,0)方法,把结尾的空字符串丢弃

所以,我们可以通过limit参数限制截取个数

        String str2 = "1,";String[] arr2 = str2.split(",");System.out.println("arr2.length=" + arr2.length);for (String s : arr2) {System.out.println(s);}String str4 = "1,";String[] arr4 = str4.split(",", 2);System.out.println("arr4.length=" + arr4.length);for (String s : arr4) {System.out.println("--" + s);}String str5 = "1,";String[] arr5 = str5.split(",", -1);System.out.println("arr5.length=" + arr5.length);for (String s : arr5) {System.out.println("--" + s);}

输出结果:

arr2.length=1
1
arr4.length=2
--1
--
arr5.length=2
--1
--

附:API

String.split()方法介绍相关推荐

  1. Java在使用时需要注意那些问题_java使用String.split方法时要注意的问题

    在使用String.split方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果. 我们看jdk doc中说明 public String[] split(String rege ...

  2. Java String split方法性能分析

    近期笔者分析一段在线代码的性能时,发现Java String类中split()方法的性能和网上一些帖子的描述并不相同,是以记录澄清. Java String split方法到底有没有使用正则表达式? ...

  3. c#中的string.split()方法

    本帖最后由 刘赛 于 2013-4-26 16:32 编辑 C#的String.Split 方法String.Split 方法有6个重载函数: 程序代码 1) public string[] Spli ...

  4. String.split()方法你可能不知道的一面

    String.split()方法你可能不知道的一面 一.问题 java中String的split()是我们经常使用的方法,用来按照特定字符分割字符串,那么我们看以下一段代码: public void ...

  5. java String split 方法丢弃末尾的空白字符问题

    问题描述 在使用 split 方法时,末尾的空白字符会被丢弃,但是实际上这个行字符可能是一个文件的内容,没个字段内容是否为空都需要记录,此时 split的此无参数方法就不再适用了. 情景再现 Stri ...

  6. 最近遇到一个String.split()方法的坑

    我们的项目数据处理之前需要数据准备,我们把准备好的数据写入txt文件中,然后读取文件,分别处理每一条,我们把读取出来的数据放到Redis中备份一份,当处理到当前条的时候,去Redis中把当前的数据拿出 ...

  7. java诡异的String.split()方法

    Reference https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String) 正文 ...

  8. framework 2.0 新增的一个string.split()方法重载

    在1.1版本的时候,出现的split方法只能够使用分隔符分开一个字符串得到一个数组,如果2个分隔符连续的话,那么这个方法会把他解析成一个空字符串在数组中,但是现在的framework2.提供一个重载, ...

  9. 【java】String.split方法limit详解

    regex会切割掉,不会包含在string[]子穿中 API: public String[] split(String regex) public String[] split(String reg ...

最新文章

  1. ReentrantReadWriteLock
  2. 突破androidstudio 的控制
  3. 监控服务器已断开正在自动重连,远程服务器已断开与发送连接器的连接
  4. 5种JavaScript中常用的排序方法
  5. SpringBoot操作Kafka创建Topic、Producer、Consumer
  6. SSM中进行注解式和XML配置式事务管理
  7. ios程序 调试log宏的添加
  8. /dev/null 21 的作用
  9. 有了“质量墙”,程序员再也没有秃头的烦恼
  10. PyCharm取消启动时自动加载项目
  11. Android5.1/7.1 Selinux JNI访问新增/dev/xxx设备节点
  12. HDU 5643 约瑟夫环的应用
  13. Makedown文件保存问题
  14. 关于L298N电机驱动模块
  15. 转 解决打印机无法打印的方法
  16. css日落_如何拍摄好日落照片
  17. 记录一篇触发器的文章
  18. yapi 权限_YAPI安装方法
  19. 质量管理的五大问题和对策|优思学院
  20. 【老生谈算法】matlab实现自动画玫瑰程序源码——画玫瑰

热门文章

  1. 一个软件开发者的历史 走在法律的边缘
  2. 精典的古代情诗,程序员追MM不可缺少.....
  3. vue3 关于子组件给父组件传值,详解
  4. 游戏测试和普通测试有什么区别?
  5. 蓝桥杯练习题之十六进制转八进制
  6. 自定义事件 (子组件事件激发父组件里子组件模块的事件)
  7. python字典增加方法_python增加字典项的方法
  8. python从excel中读取数据并填写网页表格
  9. root除miui广告,miui11去除广告
  10. vm内核参数之内存脏页dirty_writeback_centisecs和dirty_expire_centisecs