Java没有拆分“|”符号正确

时间:2015-10-11 07:09:43

标签: java split

我有一个内容

的文件

1 |是|
2 |是|
3 |是|
4 |有|
5 |是|
6 |是|
7 |是|
8 |是|
9 |是|
10 |是|
11 |是|
12 |是|
13 |是|
14 |是|
15 |是|

我使用java的String[] tokens = split("|");拆分每一行,但它返回(例如拆分“10 | yes |”)[1,0,|,y,e,s,|]。似乎不是用“|”分割,而是分裂每个字符。有人有任何想法吗?谢谢!

1 个答案:

答案 0 :(得分:2)

split接受正则表达式|在正则表达式中具有特定含义,它表示交替。要实际拆分|,您必须使用反斜杠在正则表达式中将其转义。由于您使用字符串文字指定正则表达式,并且反斜杠在字符串文字中是特殊的,您必须使用另一个反斜杠转义

String[] tokens = str.split("\\|");

在一般情况下,如果要按字面意思使用字符串的内容,可以使用Pattern.quote自动转义任何特殊字符。您在这里并不需要它,但它对最终用户输入的值很有用:

String[] tokens = str.split(Pattern.quote(stringToSplitOnLiterally));