Ruby以逗号分隔的字符串形式输出数组内容,以逗号分隔


78

是否有更正确的方法将数组的内容输出为逗号分隔的字符串

@emails = ["joe@example.com", "Peter@example.com", "alice@example.com"]

@emails * ","

=> "joe@example.com", "Peter@example.com", "alice@example.com"

这可行,但是我敢肯定必须有一个更优雅的解决方案。


8
实际上,结果将是"joe@example.com,Peter@example.com,alice@example.com"
Andre Figueiredo 2015年

3
我很困惑:有什么不雅之处array_name * ","
M. Justin

Answers:



11

尽管OP和许多答案暗示该数组总是有内容,但有时我发现自己需要加入一个可能包含“空”元素的列表(通常用于连接UI数据)。

这几乎没有关于不同方法如何处理这种“不完美”字符串数组的“进展”:

['a','b','',nil].join(',') # => "a,b,," 
['a','b','',nil].compact.join(',') # => "a,b,"
['a','b','',nil].compact.reject(&:empty?).join(',') # => "a,b"
['a','b','',nil].reject(&:blank?).join(',') # Rails only

最后一个是我最喜欢的(Rails)方法。


2

我只需要使用ERB模板做类似的事情 AllowedUsers <%= _allowed_users.join(" ") %>。它可能没有您想要的那么优雅,但是它是我在几种语言中看到的相同实现,因此可能会提高可读性。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.