当我使用
String.split("|")
来分割字符串 "1|2|3|4"
时,数组中会得到8个元素而不是4个。如果我使用 "\\|"
则结果正确。我猜测这与正则表达式有关。有人可以解释一下吗?|
是一个用于备选项的特殊字符。正则表达式中的 |
表示“空字符串或空字符串”,因此它将在所有空字符串周围拆分,每个字符将产生1个元素。用 \|
转义它会使其变成普通字符。|
在 Java 正则表达式语法中表示 OR
,基本上用 |
分割 1|2|3|4
等同于告诉 String#split()
"在空的 OR 空的之间分割这个字符串",这意味着它会在原始字符串中的每个字符后进行分割。
String.split()
方法总是使用正则表达式。虽然有更灵活的 API 可用。 - ColinD