(2500..75000).step(2500).to_a
#=> [2500, 5000, 7500, 10000, 12500, 15000, 17500, 20000, 22500, 25000, 27500, 30000, 32500, 35000, 37500, 40000, 42500, 45000, 47500, 50000, 52500, 55000, 57500, 60000, 62500, 65000, 67500, 70000, 72500, 75000]
如何使输出为:[ '2,500', '5,000', '7,500', '10,000', '12,500', ... ]
由于您使用的是 Rails,因此您可以使用 number_with_delimiter
助手:
(1..30).map { |i| number_with_delimiter(2500*i) }
在纯 Ruby 中
(1..30).map { |i| (2500*i).to_s.reverse.gsub(%r{([0-9]{3}(?=([0-9])))}, "\1,").reverse }
老实说,上面使用的正则表达式不是我创建的。而且它的可读性也不是很好。
这是我在纯Ruby中真正的功能解决方案(如果您不在Rails中,或者您不想使用辅助程序number_with_delimiter):
(1..30).map { |i| (2500*i).to_s.reverse.split("").reduce{|acc, n| "#{n}#{',' if acc.delete(',').length%3==0}#{acc}" } }
将其提取到方法中
def number_with_delimiter(number, delimiter = ',')
number.to_s.reverse.split("").reduce do |acc, n|
if acc.delete(delimiter).length % 3 == 0
"#{n}#{delimiter}#{acc}"
else
"#{n}#{acc}"
end
end
end
适用于任何数字,例如:
> (1..15).map { |i| number_with_delimiter(75000*i) }
=> ["75,000", "150,000", "225,000", "300,000", "375,000", "450,000", "525,000",
"600,000", "675,000", "750,000", "825,000", "900,000", "975,000",
"1,050,000", "1,125,000"]
简单的方法是:
('2,500'..'75,000').step(2500).to_a