如何在java中转义+字符?

时间:2015-08-20 08:15:03

标签: java string escaping

如何在java中使用split函数调用时转义+字符?

拆分声明

String[] split(String regularExpression)

这就是我所做的

services.split("+"); //says dongling metacharacter

services.split("\+"); //illegal escape character in string literal

但它允许做这样的事情

String regExpr="+";

3 个答案:

答案 0 :(得分:6)

由于+是一个正则表达式元字符(表示出现1次或更多次),因此您必须使用\(它也必须进行转义,因为它&#39)将其转义。 ;在描述制表符,新行字符\r\n和其他字符时使用的元字符,所以你必须这样做:

services.split("\\+");

答案 1 :(得分:2)

Java和Regex都有特殊的转义序列,它们都以\开头。

您的问题在于用Java编写字符串文字。 Java的转义序列在编译时解析,早在字符串传递到Regex引擎进行解析之前很久。

序列"\+"会抛出错误,因为这不是有效的Java字符串。

如果要将\+传递到Regex引擎,则必须明确让Java知道您要使用"\\+"传递反斜杠字符。

所有有效的Java转义序列如下:

\t  Insert a tab in the text at this point.
\b  Insert a backspace in the text at this point.
\n  Insert a newline in the text at this point.
\r  Insert a carriage return in the text at this point.
\f  Insert a formfeed in the text at this point.
\'  Insert a single quote character in the text at this point.
\"  Insert a double quote character in the text at this point.
\\  Insert a backslash character in the text at this point.

答案 2 :(得分:1)

应该是这样的:

services.split("\\+");