2013-07-11 38 views
-2

我有一些价格(例如10000001000)。无论什么样的价格(这可以是345000532)。我需要把这个价格分成几部分(["1", "000", "000"]["345", "000"])。将fixnum分成红宝石的几个部分

我该怎么做。有任何想法吗?

回答

3

由于您的示例包括000这只能是一个字符串(000Fixnum呈现为0),你可以在3个位数组这样做容易裂开你的号码:如果你想

num = 10000 # your num 
res = num.to_s.reverse.scan(/.{1,3}/m).map(&:reverse).reverse 
# res = ["10", "000"] 

否则分最后0 s和号的其余部分,你可以简单地做:

num = 10000 # your num 
res = [num.to_s.sub(/0+$/, '') ,num.to_s.scan(/0+$/)[0]] 
# res = ["1", "0000"] 
+1

太棒了!谢谢! – Eugene

+0

它是否适用于'1000000'? –

+0

@undur_gongor,第二个返回'[“1”,“000000”]',所以是的。第一个返回'[“1”,“000”,“000”]',这也是*意图*。 – Shoe

1

这是我的看法:

i = 1000000 
i.to_s.reverse.chars.each_slice(3).map(&:reverse).map(&:join).reverse # -> ['1', '000', '000']