Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 将字符串数组连接到带引号的逗号分隔列表中_Arrays_Ruby_String - Fatal编程技术网

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查询,更好的方法是使用(假设您正在使用):

这将确保它始终有效。开始时,添加反勾号似乎是个好主意,但:

  • 有很多方法可以解决这个问题并进行攻击。这很糟糕,任何人都可以读取或销毁数据
  • 即使只是供个人使用,也最好以“适当的方式”使用,因为迟早你会遇到这样的问题,即你的数据有一个`或其他一些你没有想到的特殊字符,在这一点上,你的程序会中断

是的,我这样做是为了转义SQL查询的变量列表。我将查看SQLite3 gem是否提供了正确的转义函数。我会使用参数化查询,但我不确定它们是否支持动态大小的列表,以便与SQL子句中的
一起使用。@randynewfield我的直觉是正确的:-)请参阅更新的答案。它的使用非常简单(可能比不这样做更简单!)不幸的是,我不能使用这样的参数化查询,因为我需要在
in
子句()其中,我的数组长度不同,不能硬编码为参数化常量变量。@randynewfield我建议使用active\u record,它可以处理此问题,哈希语法中没有问题,例如
某些对象。其中(某些列:arr)
。这是rails查询的基础,非常健壮。它可能需要更正式的开发,但即使在rails之外,我也发现它非常有用。这个答案描述了如何绑定数组: