gpt4 book ai didi

arrays - 将字符串数组连接到带引号的逗号分隔列表中

转载 作者:数据小太阳 更新时间:2023-10-29 08:18:12 48 4
gpt4 key购买 nike

如果我有一个像这样的字符串数组:

arr = ["one", "two", "three"]

我如何将它转换成反引号逗号分隔的字符串,如下所示:

"`one`, `two`, `three`"

我已经使用三个这样的调用完成了它:

arr = arr.join "`, `"
arr = arr.prepend "`"
arr = arr += "`"

但我想知道是否有更简洁的方法来实现此目的,或者除了 join 之外是否还有更好的功能可供使用。最好是一个衬垫。

最佳答案

我会使用 mapjoin :

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

这将确保它始终有效。添加反引号乍一看似乎是个好主意,但是:

  • 有很多方法可以解决这个问题并执行 SQL injection攻击。这很糟糕,任何人都可以读取或销毁数据。
  • 即使仅供个人使用,也最好以“正确的方式”进行,因为迟早您会遇到数据包含 ` 或您没有想到的其他特殊字符的问题,此时您的程序中断。

关于arrays - 将字符串数组连接到带引号的逗号分隔列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36210335/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com