-3

我有这个价值x = 876885。我想将该值拆分为数组,例如[876,885]

这是我尝试过的

x.to_s[0..2].split(',') #=> ["876"]

我怎样才能得到类似的东西[876,885]

4

6 回答 6

18

类似于 DigitalRoss 的回答。

x.divmod(1000)
于 2013-04-10T04:24:41.260 回答
7
[x/1000, x%1000] # => [876, 885] 
于 2013-04-10T04:16:49.480 回答
6

这个怎么样:

x = 876885
x.to_s.scan(/.../).map {|e| e.to_i }
=> [876, 885]
于 2013-04-10T04:11:30.120 回答
3

如果您希望能够处理任意长度的数字,那么您可以使用each_slicehttp ://ruby-doc.org/core-2.0/Enumerable.html#method-i-each_slice

876885.to_s.each_char.each_slice(3).map{|x| x.join}
于 2013-04-10T04:12:40.577 回答
2

顺便说一句,@DigitalRoss 的答案是 6 位数字的最佳答案。更通用的解决方案是:

a = 876885
a.to_s.chars.each_slice(3).map { |a| a.join.to_i }

# ⇒ [
#  [0] 876,
#  [1] 885
#]
于 2013-04-10T04:21:20.513 回答
2

这个怎么样?

[x.to_s[0..2], x.to_s[3..-1]]
于 2013-04-10T04:17:07.283 回答