作者:0519bobo_724 | 来源:互联网 | 2022-12-23 13:17
我有一个id号的数组(技术上是一个字符串).
ids = "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"
我想将id组成一个如下所示的数组:
ids = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
我发现这样做的唯一方法是使用地图.
id_numbers = ids.split(/,\s?/).map(&:to_i)
但是,这会丢弃数组中的第一个数字并将其替换为0.
id_numbers = [0, 2, 3, 4, 5, 6, 7, 8, 9, 10]
有没有更好的方法将字符串数组转换为常规数组?
1> tadman..:
由于这实际上是JSON格式,答案很简单:
require 'json'
id_json = "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"
ids = JSON.load(id_json)
你的解决方案"丢掉"第一个数字的原因是因为你分裂的方式.你系列中的第一个"数字"实际上"[1"
是Ruby不是一个数字,因此它默认转换为0.
@lacostenycoder虽然该解决方案确实挑选了许多部分,但它没有检测到任何可能重要的问题.它会兴高采烈地解析"无效文档不要读错误#19"```[19]`.
@lacostenycoder如果它像鸭子一样走路,像鸭子一样嘎嘎叫...我非常犹豫使用数字采摘系统是因为它可能会变得混乱,你永远不会知道.编程中最大的罪恶之一是"防御性编程",即使面对垃圾数据,您的方法也会悄悄地犯错,而不是错误地提醒人们注意问题.
@lacostenycoder它引入了我无法解决的未指明的"问题",否则我会.在一般意义上,当您拥有JSON数据时,除非有特定原因,否则您将使用JSON解析器.Ruby标准库是为了方便而提供的,没有理由不使用它只是因为,通过一个非常狭窄的定义,它不是"核心".