将Ruby数组字符串转换为整数数组

Mis*_*rul 1 ruby arrays string integer

我有一个id号的数组(技术上是一个字符串).

ids = "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"
Run Code Online (Sandbox Code Playgroud)

我想将id组成一个如下所示的数组:

ids = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Run Code Online (Sandbox Code Playgroud)

我发现这样做的唯一方法是使用地图.

id_numbers = ids.split(/,\s?/).map(&:to_i)
Run Code Online (Sandbox Code Playgroud)

但是,这会丢弃数组中的第一个数字并将其替换为0.

id_numbers = [0, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法将字符串数组转换为常规数组?

tad*_*man 5

由于这实际上是JSON格式,答案很简单:

require 'json'

id_json = "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"

ids = JSON.load(id_json)
Run Code Online (Sandbox Code Playgroud)

你的解决方案"丢掉"第一个数字的原因是因为你分裂的方式.你系列中的第一个"数字"实际上"[1"是Ruby不是一个数字,因此它默认转换为0.

  • @lacostenycoder虽然该解决方案确实挑选了许多部分,但它没有检测到任何可能重要的问题.它会兴高采烈地解析"无效文档不要读错误#19"```[19]`. (3认同)
  • @lacostenycoder如果它像鸭子一样走路,像鸭子一样嘎嘎叫...我非常犹豫使用数字采摘系统是因为它可能会变得混乱,你永远不会知道.编程中最大的罪恶之一是"防御性编程",即使面对垃圾数据,您的方法也会悄悄地犯错,而不是错误地提醒人们注意问题. (3认同)
  • @lacostenycoder它引入了我无法解决的未指明的"问题",否则我会.在一般意义上,当您拥有JSON数据时,除非有特定原因,否则您将使用JSON解析器.Ruby标准库是为了方便而提供的,没有理由不使用它只是因为,通过一个非常狭窄的定义,它不是"核心". (2认同)