在Java中拆分字符串

时间:2013-10-24 15:38:32

标签: java string split

我有一个字符串如下

String s = "3|4||5 9|4 0|0 4 8|..."

我希望根据"|"外观拆分它。因此,拆分应返回

["3","4","5 9","4 0,"0 4 8",...]

但是,在Java中,

s.split("|") = [, 3, |, 4, ...]

换句话说,似乎是按""字符拆分。有什么问题?

3 个答案:

答案 0 :(得分:5)

|字符在正则表达式中具有特殊含义,因此必须使用反斜杠对其进行转义。然后你必须为Java反转掉反斜杠本身。尝试:

s.split("\\|")

Javadocs for the Pattern class有很多关于正则表达式中特殊字符的详细信息。请参阅该页面中的“逻辑运算符”部分,了解|的作用。

答案 1 :(得分:2)

请注意,public String[] split(String regex)需要正则表达式

由于|是元字符,因此当您转义特殊字符时,它会起作用。

String[] results = result.split("\\|");

(亲自推荐)

String[] result = result.split(Pattern.quote("|"));

如果您使用Pattern

现在,|将被视为普通字符 |,而不是正则表达式元字符|

Oracle explained here why \\

答案 2 :(得分:1)

您可以尝试以下

 s.split("[|]")