2010-01-10 32 views

回答

3

您需要使用雙引號。

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

注意,你沒有,因爲他們是一個替代的{}內逃脫雙引號,因此將不被視爲分隔符外的字符串。

不過,你也甚至不需要在#{}包裝,如果這一切你做的 - 下面將正常工作:

puts [1,2,3].join("\n") 
+0

@Dav,在我看到你回答之前,我測試了我的...並意識到這一點。我想我從來沒有嘗試過,我只使用簡單變量或'variable.method'語法的替代。很好的答案! – 2010-01-10 21:23:56

0

Ruby不會解釋單引號字符串中的轉義序列。

你想使用雙引號:

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

NB:我的語法可能是壞的 - 我不是一個Ruby程序員。

1

轉義字符只能在雙引號字符串中使用:

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

但因爲你所有的輸出是這一個說法,我不會引用join聲明:

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

注意,只能加入增加了線路之間換行。它不會在最後一行的末尾添加換行符。如果你需要每一行以換行符結束,那麼:

#!/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

或[1,2,3] .join(「\ n」)+「\ n」:) – Veger 2010-01-10 21:42:44

+0

確實。一個是terser,一個不重複「\ n」。最好是開發人員如何測量「幹」中的「R」的好晴雨表。 – 2010-01-10 22:03:29