如何在java中使用split函数调用时转义+字符?
拆分声明
String[] split(String regularExpression)
这就是我所做的
services.split("+"); //says dongling metacharacter
services.split("\+"); //illegal escape character in string literal
但它允许做这样的事情
String regExpr="+";
答案 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("\\+");