2013-06-26 3 views
1

В IRB на Ruby 1.8.7 у меня есть набор строк, с которыми я работаю, у них есть символы новой строки. Когда эти новые строки выводятся, я хочу явно увидеть символы и \n в моих строках. Есть ли способ сообщить puts, чтобы избежать этих символов, или метод, подобный puts, который будет делать то, что я хочу?Escape line breaks in puts output

Обратите внимание, что непосредственно оценку каждой строки не является удовлетворительным, потому что я хочу, чтобы иметь возможность сделать что-то вроде этого:

=> mystrings.each { |str| puts str.magical_method_to_escape_special_chars } 
This is\na string in mystrings. 
This is another\n\rstring. 

И не хочу, чтобы это сделать:

=> mystrings[0] 
"This is\na string in mystrings." 
=> mystrings[1] 
"This is another\n\rstring." 
... 
=> mystrings[1000] 
"There are a lot of\n\nstrings!" 

ответ

2
1.8.7 :001 > s = "hi\nthere" 
=> "hi\nthere" 
1.8.7 :002 > p s 
"hi\nthere" 
+1

Документы: ['Kernel # p'] (http://ruby-doc.org/core-1.8.7/Kernel.html#method-i-p) – Stefan

1

я могу использовать string#dump метод:

=> mystrings.each { |str| puts str.dump } 
This is\na string in mystrings. 
This is another\n\rstring. 

Согласно Ruby documention for String, string#dump

Производит версию ул все непечатаемые символы заменяются \ NNN нотации и все специальные символы убежали.