以下は私のコードです
lines = File.readlines("test.txt")
print lines
print "\n#{lines[0]}"
結果が示す
["x = 2\n", "print \"2+2=\#{x+x}\"\n"]
x = 2
行 [0] を印刷しようとすると "\n" が消えるのはなぜですか?
以下は私のコードです
lines = File.readlines("test.txt")
print lines
print "\n#{lines[0]}"
結果が示す
["x = 2\n", "print \"2+2=\#{x+x}\"\n"]
x = 2
行 [0] を印刷しようとすると "\n" が消えるのはなぜですか?
\n
print
改行として出力されるため、表示されなくなります。これが、結果が次のように表示される理由です。
["x = 2\n", "print \"2+2=\#{x+x}\"\n"]
x = 2
そしてそうではありません:
["x = 2\n", "print \"2+2=\#{x+x}\"\n"]x = 2
\n
出力のように改行を保持する場合は、次を使用しますinspect
lines = File.readlines("test.txt")
print lines.inspect
print "\n#{lines[0]}".inspect
\n
は改行文字のエスケープ シーケンスなので、それが出力されます。\\n
実際の文字列を出力したい場合は試してみてください\n
。
lines 変数に File.readlines("test.txt")を設定しました。その作業は、すべてのテキストを\n文字で分割することです。lines は、\n 文字で分割されたテキストの配列になりました。そのため、印刷しようとすると\n文字が消えます。
\n は、改行を表す文字列のエスケープ シーケンスです。文字列はプログラムのように保存さ"x = 2\n"
れますが、出力プログラムはその文字列を解析し、それに応じて表示します。\n 本当に消えてしまいました。REPL も新しい行を出力しました。
編集: Ruby に文字列の解析記号 \n を無視させたい場合は、二重引用符の代わりに単一引用符を使用してください。例: print 'x = 2\n' はそのまま印刷します。