Array.join(“\ n”)不是join换行符的方式吗?
我有一个arrays..
[1,2,3,4]
我想要一个包含所有由换行符分隔的元素的string..
1 2 3 4
但是当我尝试[1,2,3,4].join("\n")
我得到了
1\n2\n3\n4
我觉得有一个明显的答案,但我找不到它!
是的,但是如果你打印出这个string,它将会有换行符:
irb(main):001:0> a = (1..4).to_a => [1, 2, 3, 4] irb(main):002:0> a.join("\n") => "1\n2\n3\n4" irb(main):003:0> puts a.join("\n") 1 2 3 4
所以它似乎达到你的愿望(?)
这里可能发生的一个微妙的错误是使用单引号而不是double。 这也会使换行符变成\ n。 所以
puts a.join("\n") # correct
是不一样的
puts a.join('\n') # incorrect
有一个很好的写在这里为什么这样的情况。
为了防止任何人在ERB模板中search此function,请尝试以下操作:
(1..5).to_a.join("<br>").html_safe
试试这也是:
puts (1..4).to_a * "\n"
你可能不想使用html_safe,就像ajay说的,取决于上下文。 Html安全可能是一个安全问题。 这取决于如果原始input实际上是安全的HTML。 HTML安全不应该直接从用户input调用,通常应该在视图之前调用。
https://bibwild.wordpress.com/2013/12/19/you-never-want-to-call-html_safe-in-a-rails-template/
[编辑回应下面的评论]
这个怎么样如果你想在新行上打印每个元素..
> a = [1, 2, 3, 4] > a.each{|e| puts e} 1 2 3 4 => [1, 2, 3, 4]