-1

嗨,我正在尝试拆分由竖线分隔的字符串。例如:

String str = "a=1|b=2";

在java中,我们应该这样做:

 str.split("\\|");

如果我使用单斜杠:

str.split("\|");

编译器给出错误:

无效的转义序列(有效的是 \b \t \n \f \r \" \' \ )

谁能解释我为什么会这样?谢谢!

4

2 回答 2

5

反斜杠\是一个特殊字符。在 Java 世界中,它用于转义字符。

管道|是 Regex 世界中的一个特殊字符,意思是“”。

要将管道用作分隔符,您需要对其进行转义(以便在正则表达式解析期间可以识别),因此您需要在正则表达式中获取它:\|

但是由于反斜杠在 Java 中是一个特殊字符,并且您使用的是 String 对象,因此您必须转义反斜杠,以便将其解释为最终预期的最终结果:\|

为此,您只需用另一个反斜杠转义反斜杠:\\|

第一个反斜杠转义了第二个反斜杠(java 要求),它转义了管道(正则表达式要求)。

于 2013-05-30T00:29:58.757 回答
1

在 Java 字符串中,反斜杠需要用另一个反斜杠转义。因此,虽然正则表达式的“规范”形式确实是\|,但作为 Java 字符串,这必须写成"\\|"

于 2013-05-30T00:19:55.673 回答