【问题标题】:how to split a text with more than one delimiter?如何拆分具有多个分隔符的文本?
【发布时间】:2012-11-19 00:16:57
【问题描述】:
public static void main(String[] args){
    String s=new String("f;sjdkfd:fdsfdf;df:FD::D:::F:RE:FRER:F:ER:FR:F:RF:GR:G:RG:  :P");
    String[] ss = s.split(":");

    for(String token : ss){
        System.out.println(token);
    }
}

使用此代码,我可以获得“:”之间的令牌。但我想用“:”和“;”来分割文本同时。这可能吗?

【问题讨论】:

标签: java string split


【解决方案1】:

你可以使用正则表达式:

String[] ss = s.split("[:;]")

所以,代码将是:

public static void main(String[] args) {
    String s = new String("f;sjdkfd:fdsfdf;df:FD::D:::F:RE:FRER:F:ER:FR:F:RF:GR:G:RG:  :P");
    String[] ss = s.split("[:;]");

    for (String token : ss) {
        System.out.println(token);
    }
}

【讨论】:

    【解决方案2】:

    你可以改用字符类:

    String[] ss = s.split("[:;]");
    

    【讨论】:

      【解决方案3】:

      使用Commons Lang,特别是[这个StrTokenizer构造函数](http://commons.apache.org/lang/api-3.1/org/apache/commons/lang3/text/StrTokenizer.html#StrTokenizer(char[] , 字符)):

      StrTokenizer tokenizer = new StrTokenizer("f;sjdkfd:fdsfdf;df:FD::D:::F:RE:FRER:F:ER:FR:F:RF:GR:G:RG:  :P".toCharArray(), ":");
      tokenizer.next(); // will give you "f;sjdkfd", followed by fdsfdf;df, etc. with every call to .next()
      

      【讨论】:

        猜你喜欢
        • 2019-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-10
        • 1970-01-01
        • 2022-01-18
        • 1970-01-01
        • 2012-12-27
        相关资源
        最近更新 更多