缘起String的split函数,简单叙述如下:源字串=“ab~cb”
分隔符=“~”
输出:ab,cd很好。
源字串=“ab|cd”
分隔符=“|”
输出:a,b,|,c,d迷惑?什么转义符?源字串=“ab~cd”
分隔符=“”
输出:空,a,b,|,c,d空串作为分隔符是不合理的,空串无法分割字串,应该引发一个异常。源字串=“~cd”
分隔符=“~”
输出:空,c,d
源字串=“cd~”
分隔符=“~”
输出:c,d分隔符前面没有字符时,会添加一个空串元素,分隔符后面没有字符时不添加空串元素。按道理,前面加,后面也要加,空串作为元素的原理是函数的可逆性,有逆函数的函数才是优美函数,分割后的集合应该能还原源字串,可是Java的规则丑陋透了。

解决方案 »

  1.   

    NC NC NC NC NC NC NC NC NC NC NC NC NC NC 
      

  2.   

    http://topic.csdn.net/u/20111229/14/a1491a8f-ef13-44ab-a5c0-8a4f73ff3a21.html?92379http://topic.csdn.net/u/20111229/14/a1491a8f-ef13-44ab-a5c0-8a4f73ff3a21.html?92379
    請LZ先明白什麽叫正則表達式,然後再看看API所支持的參數要求,至於語言并沒有是否垃圾之分,只有適合不適合
      

  3.   

    操作系统(Linux, Unix、Windws、HP、BeOS)、
    开发语言(PHP、C#、Java、C++、VB、Javascript、Ruby)
    都能用正则,关java什么事
      

  4.   

    每个月总有几个2B吃饱没死了出来骂JAVA
      

  5.   

    看下think in java吧 split 方法的参数是正则表达式,,注意是正则表达式哦。
      

  6.   

    不用java的话你可以不用啊,记住世界上没有完美的东西,追求你喜欢的就好了,不要说别人追求的好与坏
      

  7.   

    语言是自己选择的,你不想学JAVA,可以学点儿别的啊!!!!
      

  8.   

    java的库确实很让人蛋疼啊。
    我感觉设计时没有人做统一规划,所以导致其很多东西不统一。
    完全没有美感而言。
      

  9.   

    LZ正则..你都不晓得怎么用,就来说JAVA丑陋。看的我有蛋蛋的忧伤
      

  10.   

    带着欣赏的心态来学,避免它的不足之处~~~你完全可以写一个方法来替代split方法,来证明你的实力~
      

  11.   

    lz好像不是第一次来批评java了,你可以搞个“java十宗罪”出来
      

  12.   

    Java是很丑。不过楼主你要是经常照照镜子,就会觉得无所谓了。
      

  13.   

    连正则表达式都不懂,就敢说java垃圾,纯粹扯淡。
      

  14.   

    反正java是开源的,楼主完全可以修改其源码成适合自己的,然后自己编译呗。
      

  15.   

    首先,我并没有喷正则表达式,我说java丑陋是说split函数不可逆。
    其次,我们在使用字串的时候,有多少时候在使用正则表达式呢?1%一下,为了一个不经常使用的功能让其它99%的情况下都有考虑这种情况,这不是丑陋吗?
    这就是我写的: public static String[] SplitString(String str,String sp){
    String sub;
    int pos = 0;
    ArrayList<String> sl = new ArrayList<String>();
    while(true){
    int spos = str.indexOf(sp,pos);
    if(spos<0){
    sub = str.substring(pos);
    sl.add(sub);
    break;
    }
    sub = str.substring(pos,spos);
    sl.add(sub);
    pos = spos + 1;
    }
    return (String[])sl.toArray(new String[0]);
    }
      

  16.   


    一個不看API,不懂正則,就説那個這個,唉明白了正則,可以互逆
    正則是一個很常用的方式,用途也很多不再回此貼了,回了也白回
      

  17.   

    首先,喷之前,先看API甚至直接看源代码。
    其次,什么叫不可逆?拿C#举例:String[] array = str.Split(',', '|'); // public string[] Split(params char[] separator);你倒来个逆向工程,告诉我,array = {"ab","cdef","","x"},原始的String str = "ab,cdef,|x";还是其他什么?
    然后,你认为只有1%的机会,我却认为至少50%的机会。我俩的场景不同,没什么可以争论的。但是我可以告诉你,无论哪种格式,永远是解析难度》编码难度。所以,如果支持正则,相对来说,能够解决的问题更多。
    最后,先不说你的代码会抛空指针异常。你测试过没有?如果sp参数只允许一位字符的话,请使用char做参数类型。否则请考虑如下情况:
    System.out.println(Arrays.toString(SplitString("aabb", "ab")));
      

  18.   

    Java的库是非常不错的,就是语言比较2。
      

  19.   

    我承认自己手欠,对java还不是很了解,不做评价!
      

  20.   

    split 的参数是个正则表达式,不是字符串!“|”正好是正则表达式中 15 个具有特殊意义的字符之一。如果你不知道哪些是特殊字符的话,可以这样做:String[] strs = str.split(Pattern.quote("|"));
      

  21.   

    不用骂java,很多语言类库提供的方法和属性都不能满足工作中一些特殊的需要,那就只能自己重新编写算法,别去赖某种语言,它要是啥功能都能满足,你就直接堆砌那些方法就行了,那样以来程序员是个人就能当,你也就不一定有现在的工作了
      

  22.   

    在这里骂java,LZ你是没事找抽啊
      

  23.   

    其实,这说明还是刺激到你们了,如果你们真不在乎,这帖压根就不会这么多楼。Java不如C#好,但是C#贴上微软的标签,必然很多人反感,我就是这样的。可是你看,除了C++,还有什么语言可用呢?没有Java和C#,这一块目前还是空白,所以后续的只要有类似的新语言出现,很快会后浪推前浪的。