Ich frage mich, wenn jemand mir helfen herauszufinden, könnte, wie eine Zeichenfolge zu analysieren, mit dem folgende Format:Parsing ein String Escape-Zeichen enthalten, unter Verwendung von Java
;field1-field2-fieldN;field1-field2-fieldN;
Jeder Datensatz durch begrenzt ist ‚;‘ und jedes Feld innerhalb eines Datensatzes wird durch '-' begrenzt. Die Komplikation besteht darin, dass die einzelnen Felder maskierte Trennzeichen wie "\" enthalten können. oder "-". Dies führt dazu, dass mein einfacher Parsing-Code fehlschlägt. Also versuche ich, Regex-Ausdrücke zu finden, die mit den Trennzeichen übereinstimmen, aber nicht mit den Escape-Trennzeichen übereinstimmen. Mein Regex-Wissen ist nicht so toll, aber ich habe erwartet, dass es eine Möglichkeit gibt, "([^ \;])" und "([;])" zu kombinieren, um das zu bekommen, was ich benötige.
public static List<ParsedRecord> parse(String data) {
List<ParsedRecord> parsedRecords = new List<ParsedRecord>();
String[] records = data.split(";");
for (String record : records) {
String[] fields = data.split("-");
parsedRecords.add(new parsedRecord(fields));
}
return parsedRecords;
}
Vielen Dank im Voraus.
Vielen Dank! Ich habe eine Kombination aus deiner Antwort und Jon benutzt, um den Parser zum Laufen zu bringen. Sehr geschätzt! –
Das ist nicht ganz richtig ... die oben definierte Regex hat das Zeichen vor dem Trennzeichen, das ebenfalls entfernt werden soll. So "Hallo, Welt" wird [Hölle, Welt]. Der bessere Weg ist, den negativen Blick hinter Mechanismus in Regex zu verwenden: http://stackoverflow.com/questions/820172/how-to-split-a-comma-separated-string-while-ignoring-escaped-commas – Alvin