2016-11-27 4 views
3

Ich verwende diese Regex, um eine Zeile in mehrere Gruppen von 2 Zeichen aufzuteilen.Zusätzliche Zeile mit Zeilenseparator

string.replaceAll("(.{2})", "$1\r\n") 

Hier ist ein Beispiel.

Wie meine Eingabe Eingabezeichenfolge ist wie diese

ABCDEFGHIJ 

Und Ausgang ist immer wie dies

Output 
->AB 
->CD 
->EF 
->GH 
->IJ 
-> 

Gibt es eine Möglichkeit, so dass ich wirklich nicht, dass die letzte leere Zeile?

Antwort

2

Sie haben zwei Möglichkeiten:

  • manuell die neue Zeile aus dem Ergebnis entfernen
  • Ihre regex ändern
  • : (.{2})(?!$)

Nun ist die regex alle Paare mit Ausnahme des letzten fangen, und du wirst es nicht durch eine neue Linie ersetzen.

+0

seine nicht funktioniert string.replaceAll ("(. {2}) (?! $)") ReplaceAll (string, string) Fehler, weil seine nur ein Argument zu haben, wenn ich Ihnen – kelly

+2

@kelly folgen ' string.replaceAll ("(. {2}) (?! $)", "$ 1 \ r \ n") ' – Maroun

1

Andere Ansatz könnte sein:

String.join(System.lineSeparator(), string.split("(?<=\\G..)")) 

Mit string.split("(?<=\\G..)") Sie sind Splitting nach jeweils zwei Zeichen, aber da split standardmäßig leere Strings entfernt nachlauf Sie werden es nicht in Ihrem Ergebnis. So "ABCD" wird ["AB", "CD"] Array.

Dann mit String.join(delimiter, elements) können Sie Elemente aus Array in eine Zeichenfolge mit einem angegebenen Trennzeichen zwischen ihnen, in unserem Fall OS-Zeilentrennzeichen verbinden.

DEMO

+0

Hallo @ Pshemo..Können Sie mir bitte eine Sache sagen ... Ich lese die Datei erneut wie im obigen Beispiel erwähnt, nachdem die richtige Aufteilung mit dem Zeilentrennzeichen "\ n" als Zeilentrennzeichen für die Eingabedatei erhalten wurde. Und Datei in mehrere Dateien unter Verwendung des Zeilentrennzeichens "\ r \ n" für die Ausgabedatei aufteilen. Aber ich bekomme eine zusätzliche Zeile, als käme ich in meine Frage. Irgendein Vorschlag ? – kelly

+0

Sorry, aber könnten Sie Ihr Problem besser klären? Ich bin mir nicht sicher, was Sie meinen, wenn Sie "Datei erneut lesen, wie im obigen Beispiel erwähnt", da keines der veröffentlichten Beispiele das Lesen von Dateien beinhaltet, sondern nur die Verarbeitung von Text aus String. Ich kann nur annehmen, dass das Teilen von Dateien bedeutet, dass Sie Zeilentrennzeichen zu string hinzufügen. Wie auch immer, ohne [MCVE] zu sehen, kann ich nur raten, dass man 'println()' anstelle von 'print()' verwenden könnte, was nach dem gedruckten Text ein Zeilentrennzeichen hinzufügt. Sie können auch '\ r' vergessen, wenn Sie nur' \ n' in '\ r \ n' bearbeiten. Es ist schwer zu sagen. – Pshemo

Verwandte Themen