如果我传递一个|,我刚刚注意到.split()函数有些奇怪它,它将字符串拆分为字符。我测试了它:
String s = "Hiya there | how are you | im fine thanks";
for(String str : s.split("|")) {
System.out.println(str);
}
它将它分成不同的字符。我试过反斜杠,它没有用。
有没有人知道如何通过|实际拆分它?
答案 0 :(得分:9)
String#split
将正则表达式作为参数,其中|
具有特殊含义并用于alternation
。
你可以用两种方法让自己摆脱它: -
逃脱|
。请记住,在Java中,您需要使用 double-backslash : -
s.split("\\|");
使用Character类: -
s.split("[|]");
在字符类中,除了-
之外的任何字符,当在中间使用时,也没有任何特殊含义。因此,[|]
只是|
,而不是其他任何内容。
是的,你还需要在@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);
}
}