我正在尝试拆分字符串,如下所示
String string = "mike|ricki"
如果我执行以下操作string.split("|")
,我希望有2个元素的数组,"mike"
和"ricki"
。相反,我得到以下
[, m, i, k, e, |, r, i, c, k, i]
我在这里做了一些根本错误的事情吗?
答案 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("\\|")
。
反斜杠告诉正则表达式将管道视为文字字符。