Java-Split-Funktion

8

Kann jemand mir helfen zu verstehen, wie split in Java funktioniert. Ich habe den folgenden Code

%Vor%

aber bei der Split-Funktion bekomme ich die folgende Ausnahme

%Vor%     
ayush 10.03.2011, 09:06
quelle

6 Antworten

23

Wenn Sie "\" eingeben, handelt es sich tatsächlich um einen einzelnen umgekehrten Schrägstrich (aufgrund von Sonderzeichen in Java-Zeichenfolgen).

Reguläre Ausdrücke verwenden auch einen umgekehrten Schrägstrich als Sonderzeichen, und Sie müssen es mit einem weiteren umgekehrten Schrägstrich abfangen. Am Ende müssen Sie "\\" als Muster übergeben, damit es mit einem einzelnen umgekehrten Schrägstrich übereinstimmt.

    
Konrad Garus 10.03.2011, 09:08
quelle
4

\ ist ein Sonderzeichen in regulären Ausdrücken sowie in Java-String-Literalen. Wenn Sie einen literalen Backslash in einer Regex haben wollen, müssen Sie ihn zweimal verdoppeln. Probieren Sie \\ aus (wird \ einmal lexiert, wird zu einem Literal \ für den Regex-Parser).

    
Michael Kjörling 10.03.2011 09:09
quelle
2

Sie versuchen, die Zeichenfolge auf einem umgekehrten Schrägstrich zu teilen, müssen Sie verwenden:

%Vor%

\ ist das Escape-Zeichen für die Java-Zeichenfolge und die Regex-Engine. Daher wird eine Java-Zeichenkette \ an die Regex-Engine als \ übergeben, was unvollständig ist, da \ von dem Zeichen gefolgt werden muss, das versucht wird, zu entkommen.

Die Zeichenfolge \\ wird an die Regex-Engine als \ übergeben, was ein \ ist, das eine \ entkommt, was effektiv ein Literal \ bedeutet.

    
codaddict 10.03.2011 09:09
quelle
2

Du musst '\' char in Regexp-Mustern entkommen, also wird deine Regex grundsätzlich

sein %Vor%     
Nishan 10.03.2011 09:11
quelle
2

Ersetzen

String regex = "\";

mit

String regex = "\\";

    
Clyde Lobo 10.03.2011 09:12
quelle
2

Sie müssen Ihre Regex korrigieren. Es sollte sein:

%Vor%

, weil der doppelte Backslash eine Escape-Sequenz für Java-Zeichenfolgen ist.

    
Manrico Corazzi 10.03.2011 09:18
quelle

Tags und Links