解决方案 »

  1.   

    .  是java正则中的预定义字符
    表示 任何字符(与行结束符可能匹配也可能不匹配) 
    所以 此处需要添加转义字符根据 Java Language Specification 的要求,Java 源代码的字符串中的反斜线被解释为 Unicode 转义或其他字符转义。
    因此必须在字符串字面值中使用两个反斜线,表示正则表达式受到保护,不被 Java 字节码编译器解释。        String stringAb = new String("a.b");
            String[] strings = stringAb.split("\\.");
            System.out.println(strings[0]);
      

  2.   

    时刻记得split参数是正则
    String strings[] = str.split("[.]");
      

  3.   


    还真忘记这里是 regex参数了
      

  4.   

    方法是对的。但是原因解释的不够深入,看的书吧?
    正则是知道的,为了回答严谨就去jdk里面印证了下。
      

  5.   

    方法是对的。但是原因解释的不够深入,看的书吧?
    正则是知道的,为了回答严谨就去jdk里面印证了下。
    你这个回答还是比较深入一些的;不是仅仅说怎么样可以;理论上看;单独一个点“.”有二义性,需要转义;所以需要"\."但是呢,“\.”会被当做一个转义过的字符;而java又没有这个“\.”转义符,所以需要二次转义,告诉java要把"\."当做普通字符对待;于是,就有了“\\.”---双斜杠点;这样java在处理的时候,会把split的参数,提取为“\.”,也就是说,实际上,split的参数是"\,";然后java根据“\.”,来进行匹配;后面的等会再说。
      

  6.   

    可以参考 java.util.regex  Class Pattern 
      

  7.   

    这个还真不对啊。split里面的参数,就是一个字符;真不是什么正则;正则,那是误导人的。
      

  8.   

    其实看API只是知道答案,跟知道为什么还差很远的。
      

  9.   

    个人觉得这是JDK更新后的缺陷  一开始这个方法是不支持正则的  后来支持了之后  没有提供一个方法或者一个参数关闭匹配  很多时候  是不需要正则的
      

  10.   

    这个还真不对啊。split里面的参数,就是一个字符;真不是什么正则;正则,那是误导人的。
    它还真就是个正则表达式
      

  11.   

    这个还真不对啊。split里面的参数,就是一个字符;真不是什么正则;正则,那是误导人的。
     public String[] split(String regex, int limit) {
    return Pattern.compile(regex).split(this, limit);
        }
      

  12.   

    这个还真不对啊。split里面的参数,就是一个字符;真不是什么正则;正则,那是误导人的。
    它还真就是个正则表达式
    唉,呵呵;这么说吧,String s= “a;b”;然后,String[] ss = s.split(";");,你看这里的分号“;”是正则表达式吗?
      

  13.   

    这个还真不对啊。split里面的参数,就是一个字符;真不是什么正则;正则,那是误导人的。
     public String[] split(String regex, int limit) {
    return Pattern.compile(regex).split(this, limit);
        }

    仅仅是一个普通字符,不要把它想得那么神秘;看源码,看到这里,还差一段距离。
      

  14.   

    这个思路有道理;如果是两个参数这样子split(,boolean switchRegx,String s);这也好用。
      

  15.   

    这个还真不对啊。split里面的参数,就是一个字符;真不是什么正则;正则,那是误导人的。
    它还真就是个正则表达式
    唉,呵呵;这么说吧,String s= “a;b”;然后,String[] ss = s.split(";");,你看这里的分号“;”是正则表达式吗?; 怎么就不是正则了
    看来你认为的正则表达式就是要有.*+^这之类的才叫正则。
      

  16.   

    这个还真不对啊。split里面的参数,就是一个字符;真不是什么正则;正则,那是误导人的。
    它还真就是个正则表达式
    唉,呵呵;这么说吧,String s= “a;b”;然后,String[] ss = s.split(";");,你看这里的分号“;”是正则表达式吗?; 怎么就不是正则了
    看来你认为的正则表达式就是要有.*+^这之类的才叫正则。这个还真不对啊。split里面的参数,就是一个字符;真不是什么正则;正则,那是误导人的。
    它还真就是个正则表达式
    唉,呵呵;这么说吧,String s= “a;b”;然后,String[] ss = s.split(";");,你看这里的分号“;”是正则表达式吗?; 怎么就不是正则了
    看来你认为的正则表达式就是要有.*+^这之类的才叫正则。
    不能说,要有那些元字符,而是这个就是一个普通字符,和正则没有一点关系。
      

  17.   

    参照APIsplit
    public String[] split(String regex,
                          int limit)根据匹配给定的正则表达式来拆分此字符串。 
    此方法返回的数组包含此字符串的子字符串,每个子字符串都由另一个匹配给定表达式的子字符串终止,或者由此字符串末尾终止。数组中的子字符串按它们在此字符串中出现的顺序排列。如果表达式不匹配输入的任何部分,那么所得数组只具有一个元素,即此字符串。 limit 参数控制模式应用的次数,因此影响所得数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n 为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。如果 n 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。 例如,字符串 "boo:and:foo" 使用这些参数可生成以下结果: Regex Limit 结果 
    : 2 { "boo", "and:foo" } 
    : 5 { "boo", "and", "foo" } 
    : -2 { "boo", "and", "foo" } 
    o 5 { "b", "", ":and:f", "", "" } 
    o -2 { "b", "", ":and:f", "", "" } 
    o 0 { "b", "", ":and:f" } 调用此方法的 str.split(regex, n) 形式与以下表达式产生的结果完全相同: Pattern.compile(regex).split(str, n) 参数:
    regex - 定界正则表达式
    limit - 结果阈值,如上所述 
    返回:
    字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的 
    抛出: 
    PatternSyntaxException - 如果正则表达式的语法无效
    从以下版本开始: 
    1.4 
    另请参见:
    Pattern--------------------------------------------------------------------------------split
    public String[] split(String regex)根据给定正则表达式的匹配拆分此字符串。 
    该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。 例如,字符串 "boo:and:foo" 使用这些表达式可生成以下结果: Regex 结果 
    : { "boo", "and", "foo" } 
    o { "b", "", ":and:f" } 
    参数:
    regex - 定界正则表达式 
    返回:
    字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的 
    抛出: 
    PatternSyntaxException - 如果正则表达式的语法无效
    从以下版本开始: 
    1.4 
    另请参见:
    Pattern
      

  18.   

    看API,不如看看源码的实现。因为让人仅仅知道怎么使用的;不知其所以然。API提到最多的是正则。正则,泛滥了。
    其实,到了SDK内部,实现原理大致如此:
    1、把split的参数,当做一个普通字符;
    2、找到这个字符对应的Unicode码,比如句号"."对应的是46
    3、将目标字符串也转换成对应的Unicode码;然后寻找46是否存在目标的Unicode序列中;
    4、根据找的的结果,生成子串。
      

  19.   

    这个是正则,不要上当哦...我以前碰过...看api就知道了...
      

  20.   

    split是基于正则表达式分割的小数点是正则表达式中关键字,需要转义split("\\.")