Как избежать + символ в 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.