2011-01-13 6 views
2

Hey alle, Diese Frage scheint mir wirklich albern, aber ich kann nicht für das Leben von mir die Antwort nirgendwo finden. Ich versuche nur, eine Zeichenfolge zu scannen, die durch ein Sternchen (*) begrenzt ist. Wenn ich jedoch foo.useDelimiter ("*"); versuche, interpretiert Java den Stern als Platzhalter und benutzt JEDES Zeichen als Trennzeichen ... Das ist offensichtlich nicht das, was ich will. Ich habe versucht, einen Backslash als Escape-Zeichen, aber das gibt mir den Compiler-Fehler "Illegale Escape-Zeichen".Verwenden des Sternzeichens als Java-Scanner Delimiter

Das ist wahrscheinlich sehr einfach, aber ich habe wieder keine Ahnung, wo ich die Antwort finden kann!

Vielen Dank!

Linus

Antwort

6

In einer Java-String, möchten Sie einen doppelten Backslash \\ verwenden, um die tatsächliche Zeichenfolge, die interpretiert wird, ist \ *, also die * entkommen.

Im Wesentlichen müssen Sie dem Escape-Zeichen entkommen.

+0

Oh, vielen Dank! Ich fühle mich wie ein Idiot ... – Linus

4

Da Scanner die gleiche Musterklasse wie andere Regexp-Operationen verwendet, sollten zwei Backslashes den Trick machen.

(Ein Backslash nur das nächste Zeichen im String-Konstante, zwei von ihnen müssen eine in der aktuellen Zeichenfolge zu erhalten.)

2

Eine weitere Alternative ist:

Scanner in = ...; 
in.useDelimiter("[*]"); 

Alles innerhalb der Klammern sind die Zeichen, die Sie als Trennzeichen verwenden möchten.

+0

Beachten Sie, dass eine Zeichenklasse selbst möglicherweise ein anderes Metazeichen enthält, das möglicherweise entfernt werden muss. –

+0

@bart wahr, aber der Stern ist nicht einer von ihnen :) –

+0

Sie haben natürlich Recht. Mein Kommentar war eher eine vorsichtige Bemerkung gegenüber dem OP. :) –

Verwandte Themen