用java分割字符串,如果分割符是连续的多个不同的字符怎么办?比如
I,.;am;.!eating;.?something   //分割符是 , . ; ! ?我要输出 I  am eating something因为一般处理一个或者两个连续的地相同的分隔符还可以,3个或者3个以上的连续不同的字符串我就不知道了。
谢谢哪位帮个忙!

解决方案 »

  1.   

    用正则表达式先把这个替换成一种字符,再对这种字符做split
      

  2.   

    个人觉得用spilt或者substring之类的分割比较麻烦,最近迷上了正则表达式:public static void main(String args[]) {
    //I,.;am;.!eating;.?something
    String regex ="(I).*(am).*(eating).*(something)";
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher("I,.;am;.!eating;.?something");
    while(m.find()) {
    System.out.println(m.group(1) +" " +  m.group(2) + " " + m.group(3) +" " + m.group(4));
    }
    }
      

  3.   

    exesp谢谢。
    因为我想分割的目标字符串很大我先试一下。
      

  4.   

    可以将所有的标点符号全部替换成空格 String str = "I,.;am;.!;.!;.!eating;.?something";
    str=str.replaceAll("\\p{Punct}", " ");
    System.out.println(str);output:I   am         eating   something;
    多余的空格就容易去掉了
      

  5.   


    String s = "I,,..;am;.!!eating;.??something";
    String str = s.replaceAll("[,*|\\.*|;*|!*|\\?*]"," ");
    System.out.println(str);是这个意思不
      

  6.   

    老师昨天刚讲了正则表达式,我说吧:
    String str="I,.;am;.!eating;.?something";
    String[] st=str.split("[,.;!?]");
    for(String card:st){

    System.out.print(card+" ");
    }
    不标准的练练O(∩_∩)O哈哈~
      

  7.   

    你的分隔符应该是前提已经知道有多少种,像空格,逗号,分号这些的,你把那些分隔符写到一起,弄成regex吧,就像上面所说的,假设有“,;/”三种
    regex=[,;/]*,就表示只要出现这三种,不管有多少个,都split掉
    s.split(regex);
      

  8.   

    11 楼的方法要改用“+”,而不是“*”public class Test {    public static void main(String[] args) {
            String str = "I,.;am;.!eating;.?something";
            String[] strs = str.split("[,.;!?]+");
            for(int i = 0; i < strs.length; i++) {
                System.out.println(strs[i]);
            }
        }
    }
      

  9.   


    这是高中的语文阅读理解理吗? 1)分割符只有那5个2)要连续出现3个或以上3)其他符号,或出现三次以下的要不变
     String str = "I,.;am;.!eating;.?something. and.;!?,what?.;.are,.!you;.,doing?";
            str=str.replaceAll("[,.;!?]{3,}", " ");
            System.out.println(str);输出:I am eating something. and what are you doing?
      

  10.   

    既然能替换就可以直接切分,执行:
    StringUtils.join("I,.;am;.!eating;.?something".split("\\p{Punct}+")," ")
    得到的就是 I am eating somethingStringUtils.join() 是 commons-lang 中的类方法。