如何使用多个分隔符拆分文本?

3
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);
    }
}

使用这段代码,我可以获取“:”之间的令牌。但是我想同时使用“:”和“;”分割文本。这是否可能?

你可以使用Commons Lang来实现这个功能。 - Isaac
3个回答

3
您可以使用正则表达式:
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("[:;]");

1

使用Commons Lang,具体来说是[这个StrTokenizer构造函数](http://commons.apache.org/lang/api-3.1/org/apache/commons/lang3/text/StrTokenizer.html#StrTokenizer(char[], 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()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接