在Ruby中展平字符串数组

在Ruby中展平字符串数组,ruby,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('') 例2:a.reduce(“”){ac

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

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('')

例2:
a.reduce(“”){acc,dir{acc+=dir+“”}

通过避免创建临时字符串(+运算符),可以提高性能。但这不是我的主要问题。有没有更简洁的方法可以达到同样的效果?

试试看

"'#{a.join("' '")}'"
或者打高尔夫球

?'+a*"' '"+?'
试试这个:

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

更短并不总是意味着更简单。您的第一个示例简洁易懂,易于更改,而不必过于复杂

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


是否需要在数组成员内转义引号?否,仅保留数组的开头和结尾引号,如上所示。我意识到所显示的引号不在字符串本身中,这就是为什么在数组上只进行连接时它们会被剥离的原因。所有这些引号都很挑剔,但到目前为止你已经得到了最好的答案。我不是说这不好,但它也不是很自然地读取的。乍一看,即使是一个有经验的红宝石手,也会被这种事情弄得“嗯?”。有趣的高尔夫球推杆!
"'"+a*"' '"+"'"
"'#{a*"' '"}'"
a.to_s[1...-1].gsub /",?/,"'"