字符串.分裂-意外的行为



我试图分割字符串如下

String string = "mike|ricki"

如果我做以下string.split("|"),我将期望一个包含2个元素的数组,"mike""ricki"。相反,我得到以下

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

我在这里做了什么根本性的错误吗?

是。管道字符|是正则表达式中的特殊字符。您必须使用转义它。转义字符串将是|,但在Java中,反斜杠是用于在文字字符串中转义的特殊字符,因此您必须对其进行双转义并使用\|:

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

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

Pipe字符|是正则表达式中的一个特殊字符,所以如果你想把它用作文字,你必须像\|

那样转义它。所以你的代码必须是:
String[] splitted = string.split("\|");
编辑:

纠正示例代码。

字符串。Split使用正则表达式。管道字符在正则表达式中有一个特殊的含义,所以它不像你期望的那样匹配。

试试String.split("\|")

反斜杠告诉regex将管道视为文字字符。

最新更新