Arrays 将字符串数组连接到带引号的逗号分隔列表中
如果我有这样一个字符串数组:Arrays 将字符串数组连接到带引号的逗号分隔列表中,arrays,ruby,string,Arrays,Ruby,String,如果我有这样一个字符串数组: arr = ["one", "two", "three"] arr = arr.join "`, `" arr = arr.prepend "`" arr = arr += "`" 如何将其转换为倒勾引号逗号分隔字符串,如下所示: "`one`, `two`, `three`" 我通过以下三个调用完成了此任务: arr = ["one", "two", "three"] arr = arr.join "`, `" arr = arr.prepend "`"
arr = ["one", "two", "three"]
arr = arr.join "`, `"
arr = arr.prepend "`"
arr = arr += "`"
如何将其转换为倒勾引号逗号分隔字符串,如下所示:
"`one`, `two`, `three`"
我通过以下三个调用完成了此任务:
arr = ["one", "two", "three"]
arr = arr.join "`, `"
arr = arr.prepend "`"
arr = arr += "`"
但是我想知道是否有更干净的方法来实现这一点,或者除了join
之外,是否还有更好的函数可以使用。最好是一个内衬。我会使用:
你甚至可以把它放在一行上:
arr.map { |e| "`#{e}`" }.join(', ')
现在,我不完全确定这一点,但看起来您可能正在使用它来引用SQL查询的参数?如果是,请不要这样做,而是使用适当的SQL转义函数或参数化查询
为了确认您正在将其用于SQL查询,更好的方法是使用(假设您正在使用): 这将确保它始终有效。开始时,添加反勾号似乎是个好主意,但:
- 有很多方法可以解决这个问题并进行攻击。这很糟糕,任何人都可以读取或销毁数据
- 即使只是供个人使用,也最好以“适当的方式”使用,因为迟早你会遇到这样的问题,即你的数据有一个`或其他一些你没有想到的特殊字符,在这一点上,你的程序会中断
一起使用。@randynewfield我的直觉是正确的:-)请参阅更新的答案。它的使用非常简单(可能比不这样做更简单!)不幸的是,我不能使用这样的参数化查询,因为我需要在in
子句()其中,我的数组长度不同,不能硬编码为参数化常量变量。@randynewfield我建议使用active\u record,它可以处理此问题,哈希语法中没有问题,例如某些对象。其中(某些列:arr)
。这是rails查询的基础,非常健壮。它可能需要更正式的开发,但即使在rails之外,我也发现它非常有用。这个答案描述了如何绑定数组: