Nicht geschlossene Zeichenklassenfehler?

8

Hier ist der Fehler:

%Vor%

Dies ist der Bereich des Codes, der die Probleme verursacht.

%Vor%

Was bedeutet dieser Fehler und was muss getan werden, um den obigen Code zu beheben?

    
ylun.ca 16.02.2014, 21:19
quelle

5 Antworten

24

String#split arbeitet mit einem Regulären Ausdruck , aber [ (und ] ) sind keine Standardzeichen, "regex-weise". Also müssen sie escaped sein - mit \[ (und \] ).

In Java String ist jedoch \ ebenfalls kein Standardzeichen und muss auch maskiert sein.

Um also nur [ zu teilen, ist das verwendete Java String "\[" ; und du versuchst zu erhalten:

%Vor%

In diesem Fall werden Sie jedoch nicht nur semantisch einige wenige Zeichen in einem regulären Ausdruck umgehen, sondern sich wünschen, dass Ihr gesamtes Muster wortwörtlich interpretiert wird : es gibt eine Methode, genau das zu tun

ccjmne 16.02.2014, 21:23
quelle
5

Split erhält eine Regex und [,] Zeichen haben Bedeutung in Regex, also sollten Sie sie mit \[ und \] entkernen.

Wie Sie es gerade tun, findet der Parser ein] ohne ein vorangestelltes [also wirft er diesen Fehler.

    
xp500 16.02.2014 21:21
quelle
2

String.split () verwendet einen regulären Ausdruck , keine normale Zeichenfolge als Argument. In einem regulären Ausdruck sind] und [Sonderzeichen, denen Backslashes vorausgehen müssen, damit sie wörtlich genommen werden können. Verwende .split("\], \[") . (Die doppelten Backslashes weisen Java an, die Zeichenfolge als "\], \ [") zu interpretieren.

    
McLovin 16.02.2014 21:25
quelle
1
%Vor%

Ändern Sie es in

%Vor%     
Marc B 16.02.2014 21:22
quelle
0

Versuchen Sie es zu benutzen

%Vor%     
Skizzo 17.05.2016 12:40
quelle

Tags und Links