如果我通过 |,我刚刚注意到 .split() 函数有些奇怪。对它来说,它将字符串拆分为字符。我用以下方法对其进行了测试:
String s = "Hiya there | how are you | im fine thanks";
for(String str : s.split("|")) {
System.out.println(str);
}
并将其拆分为单独的字符。我尝试反斜杠,它没有工作。
有谁知道如何将它实际拆分 | ?
String#split
将正则表达式作为参数,其中|
有特殊含义,用于alternation
.
您可以使用两种方法让自己摆脱困境:-
逃脱|
。请记住,在 Java 中您需要使用双反斜杠:-
s.split("\\|");
使用字符类:-
s.split("[|]");
在字符类中,除 之外的任何字符-
在中间使用时也没有任何特殊含义。所以,[|]
只是一个|
而已。
是的,您还需要在@JanDvorak 的评论中指定的]
字符类中转义。
|
是正则表达式世界中的元字符,为了将其视为普通字符,您必须使用反斜杠对其进行转义\\|
:
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);
}
}
我总是将方括号与正则表达式一起使用,因为它们通常会随着新需求的出现而变大,并且与反斜杠相比,方括号更容易理解。
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);
}
}