开发者

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"
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜