2011-11-15 3 views
11

Jak podzielić ciąg za pomocą [ jako ogranicznika?Podział za pomocą uchwytu

String line = "blah, blah [ tweet, tweet"; 

jeśli robię

line.split("["); 

pojawia się błąd

Wyjątek w wątku "main" java.util.regex.PatternSyntaxException: niezamknięte klasa znaków pobliżu indeksu 1 [

Każda pomoc?

Odpowiedz

32

[ to zastrzeżony znak w regex, trzeba uciec,

line.split("\\["); 
4

Wystarczy uciec:

line.split("\\["); 

[ jest specjalnym Metaznak w regex, który musi być uciekł jeśli nie wewnątrz klasy znaków, takich jak w Twoim przypadku.

2

Proszę używać "\\[" zamiast "[".

3

Metoda split działa za pomocą wyrażeń regularnych. Postać [ ma specjalne znaczenie w tych; jest używany do oznaczania klas znaków między [ i ]. Jeśli chcesz użyć dosłownego kwadratowego nawiasu kwadratowego, użyj \\[, aby uciec z niego jako znak specjalny. Są dwa ukośniki, ponieważ ukośnik odwrotny jest również używany jako znak escape w literałach napisów Java. Może to trochę zagmatwać wpisywanie wyrażeń regularnych w kodzie Java.

2

[ znak jest interpretowany jako znak specjalny regex, więc trzeba go uniknąć:

line.split("\\[");