gsm123 2015-03-02 11:42 采纳率: 100%
浏览 1874
已采纳

关于java 的split,求大神解决一下啊

代码 ",,,,".split(',')

我想得到Array('','','','')
但结果我却得到了Array()

有什么办法能得到我想要的结果呢。。。

  • 写回答

6条回答 默认 最新

  • AgileGeek 2015-03-03 12:27
    关注

    可以使用含有两个参数的split方法,如",,,,".split(",", -1),你调用的那个含有一个参数的方法默认实现如下:

     public String[] split(String regex) {return split(regex, 0);}
    

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

    第二个参数(limit):
    1. 若是正数n,返回数组的长度最大为n(如传入5,反回的数组长度为最大值5,传100也将是5)
    2. 若是负数,如-1,则返回数组的长度尽可能地大(就本问题而言,推荐采用这种方法)
    3. 若是0,它拆分后会移除后面的空字符串,内部大致实现:先拆分得到一个list,resultSize=list.size(),从末尾resultSize-1开始往前循环遍历,若list.get(resultSize-1)为空字符串,使resultSize-=1,直到遇到非空字符串或resultSize=0为止;然后再调用list.subList(0, resultSize).toArray(new String[0])得到结果数组
    因此",,,,".split(",")将先得到一个含有5个空字符串的列表,即resultSize=5,然后从后往前依次检查,遇到一个空字符串,就将resultSize-=1,由于5个元素都是空字符串,最终resulSize=0,子列表为空,数组也为空了

    对第3种“奇葩”的做法,都不知道被人骂过多少次了......

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏