当我使用"1|2|3|4"
分割字符串String.split("|")
时,我在数组中得到8个元素而不是4个。如果我使用"\\|"
,结果是正确的。我猜这有正则表达式的东西。有人可以解释一下吗?
答案 0 :(得分:7)
|
是交替的特殊字符。正则表达式|
表示“空字符串或空字符串”。因此它将分割所有空字符串,为字符串中的每个字符生成1个元素。转义它\|
使其成为正常角色。
答案 1 :(得分:3)
如果您想在不使用正则表达式的情况下拆分字符串,我建议使用Splitter中的Guava类。它可以拆分固定字符串,正则表达式等。
Iterable<String> split = Splitter.on('|').split("1|2|3|4");
答案 2 :(得分:1)
|
为OR
,基本上将1|2|3|4
与|
分开等于告诉String#split()
“在空或空)这意味着它会在原始字符串中的每个字符后分割。