在Ruby中展平字符串数组

时间:2010-08-19 15:02:49

标签: ruby

将字符串数组转换为字符串的最佳惯用(最干净)方法是什么,同时保留每个元素的封闭引号。
换句话说,从中:

a = ["file 1.txt", "file 2.txt", "file 3.txt"]

我需要得到这个

"'file 1.txt' 'file 2.txt' 'file 3.txt'"

这里可以互换单引号和双引号。 我所知道的最好的方法是使用map和inject / reduce。

例如: a.map{|dir| "'" + dir + "'"}.join(' ')
eg2: a.reduce("'"){|acc, dir| acc += dir+"' "}

通过避免临时字符串创建(+运算符)可以提高性能。这不是我的主要问题。是否有更简洁的方法来实现相同的结果?

4 个答案:

答案 0 :(得分:27)

更短并不总是意味着更简单。您的第一个例子简洁,易读,易于更改,而且不会过于复杂。

a.map { |s| "'#{s}'" }.join(' ')

答案 1 :(得分:13)

试试

"'#{a.join("' '")}'"

或者打高尔夫球

?'+a*"' '"+?'

答案 2 :(得分:1)

试试这个:

"'" + a.join("' '") + "'"

答案 3 :(得分:0)

"'"+a*"' '"+"'"

"'#{a*"' '"}'"

a.to_s[1...-1].gsub /",?/,"'"