2016-11-07 3 views
0

Ich habe eine TXT-Datei mit Text wie Balboa \ n \ rblabla \ n Wenn ich den Text analysieren und drucken, möchte ich eine neue Zeile anstelle von \ n anzeigen, Es druckt immernoch \ n, \ r Zeichen auf der Konsole. Ich bin neu zu schnell, was ist das Problem hier?Schnelle Arbeit mit n r t Zeichen

Antwort

1

Wie rmmaddy sagte, legen Sie die Escape-Sequenzen nicht in Ihre Datei. Verwende die Symbole, die sie repräsentieren.

Und hier ist warum: die Escape-Sequenzen wie \n existieren nicht wirklich in Dateien, wo die neuen Zeilen sind. Diese Escape-Sequenzen sind eine Möglichkeit für Sie, Zeichen in den Quellcode einzugeben, die sonst nicht auszudrücken sind. Sobald diese Zeichenfolge erstellt wird, werden diese Escape-Sequenzen durch ihre tatsächlichen Bedeutungen ersetzt.

Fall zB haben wir diese Zeichenfolge:

let s = "a\nb" 

Es ist wie 4 Zeichen sieht (a, \, n, b), nicht wahr? Nun werfen Sie einen Blick auf diese:

print(s.characters.count) // 3 

Die String besteht eigentlich aus drei Zeichen (a, einem Newline-Zeichen, und b). Die Escape-Sequenz \n existiert nur für Sie, um mit dem Compiler "Ich möchte hier ein neues Zeilenzeichen" zu kommunizieren, statt es darzustellen, indem Sie tatsächlich eine neue Zeile eingeben müssen. Sobald der Compiler es sah, ersetzte es es durch das neue Zeilenzeichen.

Angenommen, Sie hätten ein einfaches Programm, das ein String Literal (eine direkt in Ihrem Quellcode definierte Zeichenkette) verwendet und es in eine Datei geschrieben hat. Stellen Sie sich das Verfahren, mit dem dies als eine Pipeline auftritt, in etwa wie folgt:

String literal ---> compiler ---> app binary ---> running app instance in RAM ---> file.txt 

all jener „pipes“ (--->), nur eines von ihnen verwendet (\n): die eine zwischen der Quelle und dem Compiler. Alles danach beschäftigt sich nun mit der Binärdarstellung einer neuen Zeile (z. B. 0x0A in ASCII).

Verwandte Themen