String.Split - 意外行为

时间:2014-08-01 20:13:47

标签: java string

我正在尝试拆分字符串,如下所示

String string = "mike|ricki"

如果我执行以下操作string.split("|"),我希望有2个元素的数组,"mike""ricki"。相反,我得到以下

[, m, i, k, e, |, r, i, c, k, i]

我在这里做了一些根本错误的事情吗?

3 个答案:

答案 0 :(得分:3)

是。管道符|是正则表达式中的特殊字符。您必须使用\来逃避它。转义字符串为\|,但在Java中,反斜杠\是文字字符串中的转义的特殊字符,因此您必须双重转义它并使用\\|

String[] names = string.split("\\|");
System.out.println(Arrays.toString(names));

答案 1 :(得分:2)

如果您阅读String.split() Java文档,则表示它可以接收正则表达式作为输入。

管道字符|是正则表达式中的特殊字符,因此如果您想将其用作文字,则必须像\\|

一样将其转义。

所以你的代码必须是:

String[] splitted = string.split("\\|");

编辑:更正了示例代码。

答案 2 :(得分:0)

String.split采用正则表达式。管道字符在正则表达式中具有特殊含义,因此它不像您期望的那样匹配。

请尝试String.split("\\|")

反斜杠告诉正则表达式将管道视为文字字符。