3

如果我通过 |,我刚刚注意到 .split() 函数有些奇怪。对它来说,它将字符串拆分为字符。我用以下方法对其进行了测试:

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

并将其拆分为单独的字符。我尝试反斜杠,它没有工作。

有谁知道如何将它实际拆分 | ?

4

3 回答 3

9

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

您可以使用两种方法让自己摆脱困境:-

  1. 逃脱|。请记住,在 Java 中您需要使用双反斜杠:-

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

    s.split("[|]");
    

在字符类中,除 之外的任何字符-在中间使用时也没有任何特殊含义。所以,[|]只是一个|而已。

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

于 2013-01-08T21:03:31.290 回答
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);
        }
    }
于 2013-01-08T21:03:04.170 回答
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);
    }
}
于 2013-01-08T21:57:10.280 回答