2013-08-02 2 views

ответ

4

\n исчезает, потому что print печатает его как LineBreak, поэтому ваш результат гласит:

["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 
1

\n - это escape-последовательность для символа новой строки, поэтому это печатает. Попробуйте \\n, если вы хотите напечатать фактическую строку \n.

0

\ n - это escape-последовательность для строк, которая обозначает новую строку. Ваша строка хранится как "x = 2\n" в программе, но ваша выходная программа будет анализировать эту строку и отображать соответственно. \ n snit действительно исчезает, ваш REPL также выводит новую строку.

Редактировать: Если вы хотите, чтобы Ruby игнорировал parsin \ n в вашей строке, используйте одиночные кавычки вместо двойных кавычек. Пример: print 'x = 2 \ n' будет печатать его как есть.

+0

Я вижу. Waht, если я хочу показать их все, когда я печатаю строки [0]? например, «x = 2 \ n» – Dreams

+0

Проверьте мое редактирование –

0

в вашей переменной линий вы установили File.readlines ("test.txt"). Его работа состоит в том, чтобы разбить весь текст на \ n персонаж. строки теперь представляют собой массив текста, разделенный символом \ n. Вот почему \ n символ исчезает при попытке распечатать его.

Смежные вопросы