You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ruby中将含范围的数值字符串转换为数组

解决Ruby中解析带范围的数字字符串问题

嘿,刚好碰到过类似的需求,我来帮你搞定这个范围解析的问题!你已经搞定了纯数字的情况,现在只需要给每个元素加个「范围判断+展开」的逻辑就可以了。

核心思路

我们需要遍历拆分后的每个元素:

  • 如果是带-的范围字符串,就拆分成起始和结束数字,生成Ruby的范围对象再转成数组
  • 如果是纯数字,直接转成整数
  • 最后把所有结果扁平化合并,再排序就搞定了

完整代码示例

input = "1,3,6-8,5"
result = input.split(",").flat_map do |item|
  if item.include?("-")
    # 拆分范围的起始和结束,转成整数后生成范围数组
    start_num, end_num = item.split("-").map(&:to_i)
    (start_num..end_num).to_a
  else
    # 纯数字直接转整数
    item.to_i
  end
end.sort

puts result.inspect # 输出 => [1, 3, 5, 6, 7, 8]

测试你的另一个例子

用你给的"12,3-5,2,6"测试:

input = "12,3-5,2,6"
# 运行同样的代码后,result会是 [2, 3, 4, 5, 6, 12]

小补充

如果你的输入可能存在不合法的格式(比如"5-"或者"a-3"),可以额外加一些错误处理逻辑,比如判断拆分后的数字是否有效,但如果输入都是规范的数字/范围格式,上面的代码完全够用啦。

内容的提问来源于stack exchange,提问作者not2qubit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:58:53