Java Scanner Frage
Wie legen Sie das Trennzeichen für einen scanner, der entweder ; oder neue Zeile?
Habe ich versucht:
Scanner.useDelimiter(Pattern.compile("(\n)|;"));
Aber es funktioniert nicht.
Den Fehler gefunden, ich habe zu verwenden (\r\n)|;. Ich war Parsen, so etwas wie dieses: string;Zahl\r\n... und es dauert nicht so etwas wie 100\r als eine Nummer.
InformationsquelleAutor Razvi | 2009-12-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Allgemeine Regel gilt, in mustern, die Sie brauchen, um doppelte
\
.Also, versuchen Sie
oder
Bearbeiten: Wenn
\r\n
ist das problem, möchten Sie vielleicht versuchen, diese:entspricht einem oder mehr der
\r
,\n
, und;
.Hinweis: ich habe nicht versucht, diese.
\n
und interpretiert es als die escape-Sequenz für Zeilenvorschub. Wenn Sie einen umgekehrten Schrägstrich, wird der regex-compiler sieht eine tatsächliche Zeilenvorschub Zeichen, die es entspricht wörtlich. Aber ich würde auf jeden Fall gehen Sie mit der Charakter-Klasse-version:"[\\n;]"
oder"[\n;]"
; es ist einfacher zu Lesen als auch effizienter.Moore: Ah, OK... ich bin einfach davon ausgegangen, dass eine wörtliche Linie brechen, wäre falsch interpretiert.
InformationsquelleAutor Powerlord
Als Sie entdeckt haben, werden Sie gefragt, um sich für DOS/Netzwerk-Stil
\r\n
(CRLF) line Separatoren anstelle der Unix-Stil\n
(LF). Was aber, wenn der text enthält? Das passiert eine Menge, in der Tat, wenn ich die source von dieser Seite sehe ich beide Sorten.Sollten Sie in die Gewohnheit, für beide Arten der separator, als auch die älteren Mac-Stil
\r
(CR). Hier ist ein Weg, das zu tun:Anschließen, die in Ihr Beispiel-code, den Sie erhalten:
Dies wird vorausgesetzt, Sie wollen exakt auf ein newline oder Semikolon zu einer Zeit. Wenn Sie möchten, mit einem oder mehr Sie können dies tun, statt:
Beachten Sie auch, wie ich ging in eine regex string anstatt ein Muster; alle regexes zwischengespeichert werden, automatisch, also pre-kompilieren der regex nicht bekommen Sie jede Leistung zu gewinnen.
InformationsquelleAutor Alan Moore
Blick auf die OP ' s Kommentar, es sieht aus wie es war ein anderes Zeilenende (\r\n oder CRLF) das war das problem.
Hier ist meine Antwort, das würde den Umgang mit mehreren Semikolons und Zeilenenden entweder im format (möglicherweise nicht erwünscht)
z.B. eine input-Datei, die wie folgt aussieht:
wäre die Folge 1,2,3,4,5
Habe ich versucht normal \n und \\n - beide arbeiteten in meinem Fall, aber ich bin damit einverstanden wenn Sie einen normalen Schrägstrich würden Sie wollen, es zu verdoppeln, wie es ist ein escape-Zeichen. Es passiert einfach so, dass in diesem Fall, "\n" wird das gewünschte Zeichen mit oder ohne den zusätzlichen '\'
InformationsquelleAutor Joshua McKinnon