在Ruby中展平字符串数组

Ber*_*ard 15 ruby

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

a = ["file 1.txt", "file 2.txt", "file 3.txt"]
Run Code Online (Sandbox Code Playgroud)

我需要得到这个

"'file 1.txt' 'file 2.txt' 'file 3.txt'"
Run Code Online (Sandbox Code Playgroud)

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

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

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

cap*_*ete 27

较短并不总是意味着更简单.您的第一个示例简洁,易读且易于更改,而不会造成不必要的复杂.

a.map { |s| "'#{s}'" }.join(' ')
Run Code Online (Sandbox Code Playgroud)


sta*_*son 13

试用

"'#{a.join("' '")}'"
Run Code Online (Sandbox Code Playgroud)

或者如果打高尔夫球

?'+a*"' '"+?'
Run Code Online (Sandbox Code Playgroud)

  • 我并不是说这很糟糕,但它也不是很自然.即便是经验丰富的Rubyist也会这样做"嗯?" 乍一看. (3认同)