Как избежать + символ в java?

Как избежать символа при использовании вызова функции split в java?

сплит декларации

String[] split(String regularExpression)

вот что я сделал

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

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

но это позволяет сделать что-то вроде этого

String regExpr="+";

3 ответов


С + является метасимволом regex (обозначающим вхождение 1 или более раз), вам придется избежать его с \ (который также должен быть экранирован, потому что это мета-символ, который используется при описании символа вкладки, нового символа строки(ов) \r\n и другие), поэтому вы должны сделать:

services.split("\+");

Java и Regex имеют специальные escape-последовательности, и оба они начинаются с \.

ваша проблема заключается в написании строкового литерала на Java. Escape-последовательности Java разрешаются во время компиляции задолго до того, как строка передается в механизм регулярных выражений для синтаксического анализа.

последовательность "\+" выдаст ошибку, так как это недопустимая строка Java.

если вы хотите передать \+ в ваш движок регулярных выражений вы должны явно сообщить Java, что вы хотите передать символ обратной косой черты, используя "\+".

все допустимые escape-последовательности 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.

должно быть так:

services.split("\+");