2016-11-07 11 views
0

私はバルボア\ n \ rblabla \ nのようなテキストを含む.txtファイルを持っています。\ テキストを解析して印刷すると\ nの代わりに新しい行を表示したい、 \ n、\ r文字はコンソールに出力されます。私は早急に新しいです、ここで何が問題ですか? rmmaddyとしてスウィフトは n r t文字で作業しています

答えて

1

は、ファイル内のエスケープシーケンスを入れていない、と述べました。実際に表現している記号を使用してください。このよう\nとしてエスケープシーケンスは、実際に新しい行があるファイルに存在しない:なぜここ

そしてです。これらのエスケープシーケンスは、他の方法では表現できない文字を(ソースコードに)入力する方法です。その文字列が作成されると、それらのエスケープシーケンスは実際の意味に置き換えられます。例えば

は、我々は、この文字列があるとします。

let s = "a\nb" 

それは右、4つの文字(a\nb)のように見えますか?さて、このを見てみましょう:

print(s.characters.count) // 3 
実際には3つの文字で構成されて String

a、改行文字、およびb)。 \nエスケープシーケンスは、実際に新しい行を入力することによって表現するのではなく、 "ここに新しい行の文字が必要です"というコンパイラと通信するためだけに存在していました。コンパイラがそれを見てすぐに、それはそれを新しい行の文字に置き換えます。

Stringリテラル(ソースコードで直接定義された文字列)を受け取り、ファイルに書き込んだ簡単なプログラムがあるとします。おおよそようなので、これはパイプラインとして発生するプロセスを想像:ソースと、コンパイラとの間の1:すべてのこれらの「パイプ」(--->)、唯一のそれらの用途(\n)の

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

を。それ以降は、改行のバイナリ表現(例えば、ASCIIでは0x0A)を扱うようになりました。

関連する問題