2013-10-24 64 views
1

一个字符串我有一个字符串如下分裂Java中

String s = "3|4||5 9|4 0|0 4 8|..." 

,我想基础上,"|"出现分裂它。因此,分割应返回

["3","4","5 9","4 0,"0 4 8",...] 

但是,在Java中,

s.split("|") = [, 3, |, 4, ...] 

换句话说,它是由""性格分裂,它似乎。哪里不对?

+0

String.split()需要一个正则表达式,而不是一个普通的字符串。 – Stephan

回答

5

|字符在正则表达式中具有特殊含义,所以您必须使用反斜杠进行转义。那么你必须逃避Java自身的反斜杠。请尝试:

s.split("\\|") 

Javadocs for the Pattern class有许多关于正则表达式中特殊字符的详细信息。请参阅该页面中的“逻辑运算符”部分,了解|的功能。

2

注意public String[] split(String regex)需要正则表达式

由于|是一个元字符,它工作时,你逃脱特殊字符

String[] results = result.split("\\|"); 

(个人建议这个)

String[] result = result.split(Pattern.quote("|"));

如果你用现在Pattern

|将被视为正常字符|而不是正则表达式元char |

Oracle explained here why \\