如果我有一个像这样的字符串数组:
arr = ["one", "two", "three"]
如何将其转换为反引号引用的逗号分隔字符串,如下所示:
"`one`, `two`, `three`"
我已经使用三次调用完成了它:
arr = arr.join "`, `"
arr = arr.prepend "`"
arr = arr += "`"
但我想知道是否有更简洁的方法来实现这一点,或者除join
之外是否还有更好的功能。优选一个衬垫。
答案 0 :(得分:9)
arr = ["one", "two", "three"]
arr
.map { |e| "`#{e}`" }
.join(', ')
你甚至可以把它放在一行:
arr.map { |e| "`#{e}`" }.join(', ')
现在,我并不完全确定这一点,但看起来您可能正在使用它来引用SQL查询的参数?如果你是,那么请不要这样做,但要使用正确的SQL转义函数或参数化查询。
为了回复确认您将其用于SQL查询,更好的方法是使用(假设您正在使用sqlite3-ruby):
db = SQLite3::Database.new 'my_database.sqlite3'
arr = ["one", "two", "three"]
db.execute('select * from foo where a=? and b=? and c=?', arr) do |row|
p row
end
这将确保它始终有效。一开始添加反引号似乎是一个好主意,但是: