我试图分割字符串如下
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将管道视为文字字符。