1

我有一个字符串如下

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, ...]

换句话说,""它似乎是按角色分裂的。怎么了?

4

3 回答 3

5

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

s.split("\\|")

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

于 2013-10-24T15:39:22.890 回答
2

请注意,public String[] split(String regex)需要一个regex

由于|是元字符,当您转义特殊字符时它可以工作。

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

或者(个人推荐这个)

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

如果您使用模式

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

Oracle 在这里解释了原因\\

于 2013-10-24T15:41:39.267 回答
1

您可以尝试如下

 s.split("[|]")
于 2013-10-24T15:40:23.967 回答