How to format this international phone number in Rails?
If I have an international开发者_运维问答 phone number such as this:
0541754301
how can I format it to produce something like this:
0541-754-301
You could use the number_to_phone(number, options = {})
method from ActionView::Helpers::NumberHelper
However, the docs point out that this method formats a number into a US phone number (e.g., (555) 123-9876).
Instead you could use this patch which adds the ability to provide number groupings:
:groupings - Specifies alternate groupings
(must specify 3-element array; defaults to [3, 3, 4])
So in your case you would call:
number_to_phone('0541754301', :groupings => [4, 3, 3], :delimiter => "-")
to produce:
0541-754-301
Or, since you're not looking for anything fancy like parentheses or '+', but just hyphens between numeric groups, you can:
"0541754301".unpack('A4A3A3').join('-')
You can use regular expression to reformat the string. For the example you have given:
"0541754301".sub(/(\d{4})(\d{3})(\d{3})/, "\\1-\\2-\\3") # returns: "0541-754-301"
There's phony and phone gems available.
Phony.formatted('18091231234', :format => :international).should == '+1 809 123 1234'
or simliarly
phone.format("+ %c (%a) %n") # => "+ 385 (91) 5125486"
精彩评论