Newline in file schreiben ohne newline darzustellen?
-
Hallo,
ich habe ein file in das ich verschiedene Informationen schreibe, etwa so aufgebaut;
1;2;3.4;2;kurzerklärung 2;4;3.2;4;kurzerklärung etc.Das hat bis jetzt auch immer gut funktioniert. Jetzt will ich aber noch zu der "Kurzerklärung" eine längere Erklärung schreiben. Diese besteht aus mehreren Zeilen pro Item.
Ich will in der Datei aber trotzdem nur für jeden Eintrag genau eine Zeile verwenden. Also so:
1;2;3.4;2;kurzerklärung;langeErklärungDieMehrereNewlinesEnthält 2;4;3.2;4;kurzerklärung;langeErklärungDieMehrereNewlinesEnthält etc.Wie könnte man das Problem am besten lösen? Einfach "\n" ausgeschrieben einfügen und beim einlesen dann durch ein newline ersetzen, oder gibt es da was besseres? (Diese Methode will ich eigentlich nicht verwenden, weil "\n" auch Teil der langen Erklärung sein kann und dann nicht ersetzt werden sollte...)
-
Auf irgendwie sowas wird es wohl hinaus laufen. Du kannst es ja machen wie bei den Strings in C++. Ein
"\n"ist ein Zeilenumbruch und"\\n"wird als"\n"angezeigt. Was machst du eigentlich mit deinem Semikolon Trennzeichen?
-
Es muss halt etwas sein, was im normalen Text nicht vorkommen kann. Ich schlage mal ein Nullzeichen vor. Wobei das eventuell auch komische Effekte haben könnte, wenn man die Datei dann in einem Texteditor anguckt. Daher die vielleicht wichtigere Frage: Warum willst du das eigentlich so machen? Soll man die Datei in einem Texteditor angucken können und dabei trotzdem die Struktur erkennen können? Oder hat es damit zu tun, dass du nicht weißt, wie du es hinterher wieder einlesen kannst, wenn Zeilenumbrüche in der Datei sind?
-
Vielleicht ist es ja auch Zeit, sich mit SQLite zu beschäftigen.
-
Benutze die pipe (|) oder (###) anstelle von newline. Kommt äußerst selten vor. Musst du halt ein bißchen konvertieren.
-
SeppJ schrieb:
Es muss halt etwas sein, was im normalen Text nicht vorkommen kann. Ich schlage mal ein Nullzeichen vor. Wobei das eventuell auch komische Effekte haben könnte, wenn man die Datei dann in einem Texteditor anguckt. Daher die vielleicht wichtigere Frage: Warum willst du das eigentlich so machen? Soll man die Datei in einem Texteditor angucken können und dabei trotzdem die Struktur erkennen können? Oder hat es damit zu tun, dass du nicht weißt, wie du es hinterher wieder einlesen kannst, wenn Zeilenumbrüche in der Datei sind?
Ja also ich würde die Struktur gerne "übersichtlich" halten, also ein Datensatz pro Zeile. Die ausführliche Erklärung ist beim "überfliegen" der Daten nicht so wichtig, deswegen wäre es schön wenn das alles Zeilenweise bleibt.
sebi707 schrieb:
Was machst du eigentlich mit deinem Semikolon Trennzeichen?
Semicolon kommt garantiert nicht vor (hoffentlich^^).
EOP_ist_offfline schrieb:
Benutze die pipe (|) oder (###) anstelle von newline. Kommt äußerst selten vor. Musst du halt ein bißchen konvertieren.
sebi707 schrieb:
Auf irgendwie sowas wird es wohl hinaus laufen. Du kannst es ja machen wie bei den Strings in C++. Ein "\n" ist ein Zeilenumbruch und "\\n" wird als "\n" angezeigt.
Ja, das hatte ich befürchtet. Ich hab da nur ein ungutes Gefühl dabei.
-
Es sieht sehr nach dem CSV File Format aus. Wenn Du es korrekt implementierst, kannst Du auch Zeilenumbrüche in Datenfelder haben. Siehe dazu: https://tools.ietf.org/html/rfc4180
(MS Excel kann damit umgehen.)Wenn es wirklich je Zeile ein kompletter Datensatz sein muss, fliegt diese Idee hier wohl raus.
Ach wenn es eh nur zum überfliegen dienen soll, warum nimmst dann nicht einfach die Umbrüche komplett raus? Auch wenn es vermutlich "unnötig" ist, warum nicht eine Datei als "Debug" Variante (ohne Zeilenumbrüche) und eine Datei mit gültigen Zeilenumbrüchen?!
Schönes Wochenende euch allen.