[ruby-core:93841] [Ruby master Feature#16011] Digit grouping
From:
shyouhei@...
Date:
2019-07-19 05:57:17 UTC
List:
ruby-core #93841
Issue #16011 has been updated by shyouhei (Shyouhei Urabe).
```ruby
class Integer
def delimited(n)
div, mod = n.divmod(3)
return ( \
digits(1000).lazy + [0].cycle \
) . first(div + 1) \
. reverse \
. map {|i| '%03d' % i } \
. join(',') \
. sub(/\A\d{#{3-mod}},?/, '')
end
end
1234.delimited(8) #=> "0,001,234"
```
----------------------------------------
Feature #16011: Digit grouping
https://bugs.ruby-lang.org/issues/16011#change-79725
* Author: svnpenn (Steven Penny)
* Status: Open
* Priority: Normal
* Assignee:
* Target version:
----------------------------------------
Ruby seems to have no way to format a number with grouped thousands. I see Rails
has an option:
require 'active_support/all'
1234.to_s(:delimited)
However in this case it seems that grouping cannot be combined with say, leading
zeros:
https://github.com/rails/rails/issues/36707
This is quite simple with other languages, for example JavaScript:
(1234).toLocaleString(0, {minimumIntegerDigits: 7});
"0,001,234"
Python:
>>> format(1234, '08,')
'0,001,234'
Go:
package main
import "golang.org/x/text/language"
import "golang.org/x/text/message"
func main() {
message.NewPrinter(language.English).Printf("%07d\n", 1234)
// 0,001,234
}
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>