Ruby,插值字符串数组

6
当我插值一个字符串数组时,它会包含引号'\"'的转义字符,如何在不包含引号的情况下进行插值?
string_array = ["a","b","c"]
p "#{string_array}"        # => "[\"a\", \"b\", \"c\"]"

1
使用 to_s 替代?什么是“sans quotes”? - squiguy
2
@squiguy:字符串插值只是在数组上调用to_s,所以他会得到相同的结果。 "Sans quotes" 意味着没有引号。 - Nick Messick
在messick的情况下,反斜杠存在的原因是因为他在字符串上调用了inspect方法,而不是string_array。字符串和数组的.inspect方法是不同的。(我想) - Senjai
@messick 我不知道他想要将元素加入,但是你说得对。 - squiguy
2个回答

6

使用p "#{string_array}"puts "#{string_array}".inspect相同。

记住,因为p对象与puts对象的inspect方法相同。

也就是说,在你的情况下,你在一个字符串上调用了p,其效果与以下代码相同:

puts string_array.to_s.inspect 

(to_s总是在数组被请求成为字符串(用于打印等等)时调用。因此,您实际上是检查由数组返回的字符串,而不是数组本身。如果您只想以["a","b","c"]的形式打印它,方法是使用

p string_array而不是p“#{string_array}”

如果您想将数组中的所有字符串连接在一起,则可以使用String#join来完成此操作。例如,如果我想在每个值之间放置逗号和空格,像messick一样,我会使用:)
puts string_array.join(", ")

这将输出:“a, b, c”。

哎呀!感谢您提供如此详细的回复。我完全忘记了调用inspect函数。谢谢! - user1297102
NP!很高兴能够帮助,如果您满意,请记得接受答案! - Senjai

3
你需要将数组元素进行合并。 ["a","b","c"].join(', ')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接