拆分字符串java

时间:2013-01-08 21:01:18

标签: java string split

如果我传递一个|,我刚刚注意到.split()函数有些奇怪它,它将字符串拆分为字符。我测试了它:

String s = "Hiya there | how are you | im fine thanks";
for(String str : s.split("|")) {
    System.out.println(str);
}

它将它分成不同的字符。我试过反斜杠,它没有用。

有没有人知道如何通过|实际拆分它?

3 个答案:

答案 0 :(得分:9)

String#split将正则表达式作为参数,其中|具有特殊含义并用于alternation

你可以用两种方法让自己摆脱它: -

  1. 逃脱|。请记住,在Java中,您需要使用 double-backslash : -

    s.split("\\|");
    
  2. 使用Character类: -

    s.split("[|]");
    
  3. 在字符类中,除了-之外的任何字符,当在中间使用时,也没有任何特殊含义。因此,[|]只是|,而不是其他任何内容。

    是的,你还需要在@JanDvorak的评论中指定的字符类中转义]

答案 1 :(得分:2)

|是正则表达式世界中的元标记,为了将其视为普通字符,您必须使用反斜杠\\|来逃避它:

public static void main(String...args) throws ParseException{
        String s = "Hiya there | how are you | im fine thanks";
        for(String str : s.split("\\|")) {
            System.out.println(str);
        }
    }

答案 2 :(得分:0)

我总是使用带有正则表达式的方括号,因为它们通常随着新要求的增大而变大,并且方括号与反斜杠相比易于理解。

public static void main(String...args) throws ParseException{
    String s = "Hiya there | how are you | im fine thanks";
    for(String str : s.split("[|]")) {
        System.out.println(str);
    }
}