将字符串数组转换为字符串的最佳惯用(最干净)方法是什么,同时保留每个元素的封闭引号。
换句话说,从中:
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+"' "}
通过避免临时字符串创建(+运算符)可以提高性能。这不是我的主要问题。是否有更简洁的方法来实现相同的结果?
答案 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 /",?/,"'"