如何将Ruby数组字符串转换为整数数组?
解决字符串数组转整数数组的问题
哦,我知道问题出在哪啦!你原来的字符串ids首尾带着[和],当你用split(/,\s?/)拆分后,第一个元素其实是"[1"——这个字符串以非数字字符开头,Ruby的to_i方法遇到这种情况会直接返回0,这就是第一个数字变成0的原因。
给你几个靠谱的解决方法,按需选择就行:
方法1:先清理首尾括号再拆分转换
这种方法很直观,先把字符串开头的[和结尾的]去掉,再按你的思路拆分转换:
ids = "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]" # 用正则去掉首尾的括号 cleaned_str = ids.gsub(/^\[|\]$/, '') id_numbers = cleaned_str.split(/,\s?/).map(&:to_i) # 结果就是 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
方法2:用JSON解析(最健壮)
因为你的字符串刚好是标准的JSON数组格式,直接用Ruby的JSON库解析是最稳妥的方式,还能处理更复杂的情况:
require 'json' ids = "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]" id_numbers = JSON.parse(ids) # 一步到位得到整数数组,无需手动处理分隔符或括号
方法3:直接提取所有数字
如果字符串里除了目标数字没有其他干扰数字,用scan提取所有连续数字的片段再转换也很简单:
ids = "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]" id_numbers = ids.scan(/\d+/).map(&:to_i) # scan会把所有数字片段捞出来,直接转成整数数组
内容的提问来源于stack exchange,提问作者Misha Krul
相关产品推荐
相关产品推荐

