我想区分 一字符串可能为: "xxx;;;xx;xx;;;;;"
用SPLIT 最;;中间的null好像不成功啊? 只要;;中间有东西就没有问题

解决方案 »

  1.   

    你这个需要用到正则表达式了~
    import java.util.*;
    import java.util.regex.*;
    public class qdb
    {
    public static String[] split(String s,String regex)
    {
    Pattern p=Pattern.compile(regex);
    return p.split(s);
    }
    public static void main(String[] args)
    {
    String s="xxx;;;xx;xx;;;;;" ;
    String regex=";+";
    System.out.println(Arrays.toString(qdb.split(s, regex)));
    }
    }
    可以看看这个~
      

  2.   

    好像没用啊,我用:
           String regEx=";+";
           Pattern p=Pattern.compile(regEx);System.out.println(p.split("test;;;;t;;t;;t;")[2]);
    就出错了
    数组是0的时候没有问题
      

  3.   

    import java.util.*;
    public class qdb
    {
    public static void main(String[] args)
    {
    String s= "xxx;;;xx;xx;;;;;";
    char[] c=s.toCharArray();
    String[] ss=new String[c.length];
    for(int i=0;i<ss.length;i++)
    {
    ss[i]=String.valueOf(c[i]);
    }
    System.out.println(Arrays.toString(ss));
    }
    }
    别告诉我你想这样~当然换成charAt(int i)也行~
      

  4.   

    java.lang.String中split方法的原代码:    public String[] split(String regex, int limit) {
    return Pattern.compile(regex).split(this, limit);
        }    public String[] split(String regex) {
            return split(regex, 0);
        }
    Pattern的split方法是这样的:
    API
    public String[] split(CharSequence input, int limit)
    围绕此模式的匹配拆分给定输入序列。 
    此方法返回的数组包含输入序列的子字符串,由匹配此模式的另一子序列或输入序列的结尾终止。数组中子字符串的顺序与其在输入中出现的顺序相同。如果此模式与输入的任何子序列都不匹配,那么得到的数组仅包含一个元素,即字符串形式的输入序列。 limit 参数控制应用模式的次数,从而影响结果数组的长度。如果限制 n 大于零,那么模式至多应用 n> - 1 次,数组的长度不大于 n,并且数组的最后条目将包含除最后的匹配定界符之外的所有输入。如果 n 非正,那么将应用模式的次数不受限制,并且数组可以为任意长度。如果 n 为零,那么应用模式的次数不受限制,数组可以为任意长度,并且将丢弃尾部空字符串。 例如,输入 "boo:and:foo" 将产生以下结果及参数: Regex    Limit    Result    
    :        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" } 参数:
    input - 要拆分的字符序列。
    limit - 结果阈值,如上文中所述。 
    返回:
    根据围绕此模式的匹配来拆分输入后所计算的字符串数组。               123  4  56789
    所以在调用"xxx;;;xx;xx;;;;;".split(";");
    执行流程应该是这样的:
    1、找到1位置的“;”,标志着1位置前的字符串(“xxx”)要被分开
    2、匹配2位置的“;”,标志着2位置前的字符串要被分开,但是前没有,只有"",所以就分出来空
    3、匹配2位置的“;”,标志着3位置前的字符串要被分开,但是前没有,只有"",所以就分出来空
    4、与1相同
    5、56789位置在末,被取消。故返回结果是:
    { "xxx", "", "", "xx", "xx" }
      

  5.   

    实际上String类的split方法是用的正则表达式。
      

  6.   

    看String的split还不如看Pattern与Matcher
      

  7.   

    split本身就是使用正则表达式实现
    你只需要写一个正则传到split里就可以了
    JAVA资料太多?选中想收藏的文字(图片),右键选“收录到易载”,搞定!
      

  8.   

     可是我想在 “xxx;;;xx;xx;;;;;".split(";");  的结果输出: xxx  "" "" xx xx "" "" "" ""