Array.join("\n")不是用换行符连接的方式吗?

jdi*_*ona 61 ruby ruby-on-rails

我有一个阵列..

[1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

我想要一个包含由换行符分隔的所有元素的字符串.

1

2

3

4
Run Code Online (Sandbox Code Playgroud)

但是当我尝试时,[1,2,3,4].join("\n")我得到了

1\n2\n3\n4
Run Code Online (Sandbox Code Playgroud)

我觉得有一个明显的答案,但我找不到它!

Cod*_*lan 76

是的,但如果您打印出该字符串,则会在其中添加换行符:

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
Run Code Online (Sandbox Code Playgroud)

所以它似乎实现了你想要的(?)


Scr*_*mer 47

这里可能出现的一个微妙错误是使用单引号而不是double.这也具有将换行符渲染为\n的效果.所以

puts a.join("\n")   # correct
Run Code Online (Sandbox Code Playgroud)

是不一样的

puts a.join('\n')   # incorrect
Run Code Online (Sandbox Code Playgroud)

还有为什么是这样一个优秀的写了这里.

  • 我已经编辑了答案,以包含解释其工作原理的链接。 (2认同)

Aja*_*jay 11

如果有人在ERB模板中搜索此功能,请尝试以下操作:

(1..5).to_a.join("<br>").html_safe
Run Code Online (Sandbox Code Playgroud)


khe*_*lll 5

试试这个:

puts (1..4).to_a * "\n"
Run Code Online (Sandbox Code Playgroud)