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

Ruby中如何将大整数拆分为滑动窗口式整数数组

Ruby实现滑动窗口截取连续4位数字数组

要搞定这个需求其实很简单,核心思路就是把整数转成字符串后,用滑动窗口的方式遍历截取片段,再转回整数即可。这里给你两种实用的实现方式:

方法一:用each_cons(最Ruby风格的写法)

num = 293649214912
result = num.to_s.chars.each_cons(4).map { |chars| chars.join.to_i }
p result # 输出: [2936, 9364, 3649, 6492, 4921, 9214, 2149, 1491, 4912]

代码拆解:

  • num.to_s:先把大整数转成字符串,毕竟要处理连续的字符片段
  • .chars:把字符串拆成单个字符的数组,比如"293649214912"会变成["2","9","3","6","4","9","2","1","4","9","1","2"]
  • .each_cons(4):Ruby数组的贴心方法,会依次取出数组里连续的4个元素组成子数组,比如第一个子数组是["2","9","3","6"],第二个是["9","3","6","4"],以此类推
  • .map { |chars| chars.join.to_i }:把每个子数组的字符拼接成字符串,再转成整数,最终就得到了你要的目标数组

方法二:手动遍历索引(适合理解底层逻辑)

如果你想一步步掌控遍历过程,也可以通过索引手动实现:

num = 293649214912
str = num.to_s
result = []
# 循环范围从0到字符串长度减4,确保每次都能取到完整的4个字符
(0..str.length - 4).each do |i|
  result << str[i, 4].to_i
end
p result # 同样输出目标数组

代码拆解:

  • str[i, 4]:Ruby字符串的截取语法,意思是从索引i开始,取4个字符
  • (0..str.length - 4):这个范围保证了最后一次截取的起始索引不会超出字符串长度,避免出现截取不足4位的情况

两种方法都能完美满足需求,其中each_cons是Ruby处理滑动窗口问题的惯用写法,代码更简洁优雅。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 13:17:41