在Java中拆分字符串

时间:2010-09-24 20:07:03

标签: java regex string split

当我使用"1|2|3|4"分割字符串String.split("|")时,我在数组中得到8个元素而不是4个。如果我使用"\\|",结果是正确的。我猜这有正则表达式的东西。有人可以解释一下吗?

3 个答案:

答案 0 :(得分:7)

你是对的。 |是交替的特殊字符。正则表达式|表示“空字符串或空字符串”。因此它将分割所有空字符串,为字符串中的每个字符生成1个元素。转义它\|使其成为正常角色。

答案 1 :(得分:3)

如果您想在不使用正则表达式的情况下拆分字符串,我建议使用Splitter中的Guava类。它可以拆分固定字符串,正则表达式等。

Iterable<String> split = Splitter.on('|').split("1|2|3|4");

答案 2 :(得分:1)

在Java正则表达式语法中,

|OR,基本上将1|2|3|4|分开等于告诉String#split()“在空或空)这意味着它会在原始字符串中的每个字符后分割。