2015-08-20 2 views
8

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

раскол декларации

String[] split(String regularExpression) 

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

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

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

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

String regExpr="+"; 
+1

@kocko спасибо большое .... ** но почему я должен \\ + символ ** почему не \? –

+1

потому что '+' является специальным символом регулярного выражения, а 'split' принимает regex –

+0

@JordiCastilla, но поскольку я знаю, что split принимает String. Есть ли какой-либо специальный тип строки для split? IDE уведомляет меня об этих ошибках. Я не компилировал это. –

ответ

5

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

services.split("\\+"); 
1

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. 
Смежные вопросы