2014-10-04 33 views

回答

15

在正则表达式,|是用于alternation保留字符。你需要逃避它:

String out = string.split("\\|"); 

请注意,我们使用了两个反斜杠。这是因为第一个转义了Java字符串中的第二个,所以传递给正则表达式引擎的字符串是\|

+2

谢谢!我以为有人会用一个反斜杠逃脱它,但Android Studio告诉我这是一个非法的转义字符,所以我认为它不需要转义。谢谢! – Yharoomanner 2014-10-04 11:50:06

+4

为了澄清,这不是'''字符表示一个空字符串。它的意思是“或”。只是这意味着问题中的正则表达式转换为“空字符串或空字符串”。 – yshavit 2014-10-04 12:09:19

+0

@Yharoomanner请注意,双反斜杠表示输入字符串中的反斜杠字符。然后将它作为字符串“\ |”传递给正则表达式解析器它代表一个垂直栏字符。 – 2014-10-05 03:36:32

1

我觉得这已经回答了Java split string to array

在答案汇总在上面的链接:

String[] array = values.split("\\|",-1); 

这是因为:

此方法的工作方式类似于调用具有给定表达式的双参数split方法和参数为零的limit。尾随的空字符串因此不包含在结果数组中。

1

split需要一个正则表达式,其中|是一个特殊字符。您需要使用反斜杠进行转义。但反斜杠是Java字符串中的一个特殊字符,因此您也需要将其转义。

myString.split("\\|")