Как правильно соединить символ LF в массиве? - PullRequest
0 голосов
/ 11 января 2010

Основной вопрос.

Вместо добавления \ n между элементами:

>> puts "#{[1, 2, 3].join('\n')}"
1\n2\n3

Мне нужно добавить символ перевода строки, поэтому ожидаемый вывод при печати:

1

2

3

Какой лучший способ сделать это в Ruby?

Ответы [ 4 ]

3 голосов
/ 11 января 2010

Вам нужно использовать двойные кавычки.

puts "#{[1, 2, 3].join("\n")}"

Обратите внимание, что вам не нужно избегать двойных кавычек, потому что они находятся внутри {} подстановки и, следовательно, не будут рассматриваться как разделители для внешней строки.

Однако вам даже не нужна оболочка #{}, если это все, что вы делаете - следующее будет работать нормально:

puts [1,2,3].join("\n")
1 голос
/ 11 января 2010

Обратите внимание, что объединение добавляет только переводы строк между строками. Это не добавит перевод строки в конец последней строки. Если вам нужно, чтобы каждая строка заканчивалась переводом строки, то:

#!/usr/bin/ruby1.8

lines = %w(one two three)
s = lines.collect do |line|
  line + "\n"
end.join
p s        # => "one\ntwo\nthree\n"
print s    # => one
           # => two
           # => three
1 голос
/ 11 января 2010

Экранированные символы могут использоваться только в строках с двойными кавычками:

puts "#{[1, 2, 3].join("\n")}"

Но так как все, что вы выводите, это одно утверждение, я бы не стал цитировать выражение join:

puts [1, 2, 3].join("\n")
0 голосов
/ 11 января 2010

Ruby не интерпретирует escape-последовательности в одиночных кавычках.

Вы хотите использовать двойные кавычки:

puts "#{[1, 2, 3].join(\"\n\")}"

Примечание: мой синтаксис может быть плохим - я не программист на Ruby.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...