Как отформатировать этот международный номер телефона в Rails? - PullRequest
9 голосов
/ 25 октября 2009

Если у меня есть международный номер телефона, такой как:

0541754301

как мне отформатировать его, чтобы получить что-то вроде этого:

0541-754-301

Ответы [ 4 ]

20 голосов
/ 25 октября 2009

Вы можете использовать метод number_to_phone(number, options = {}) из ActionView :: Helpers :: NumberHelper

Однако в документах указывается, что этот метод форматирует число в номер телефона США (например, (555) 123-9876).

Вместо этого вы можете использовать этот патч , который добавляет возможность предоставлять группировку номеров:

:groupings     - Specifies alternate groupings 
(must specify 3-element array; defaults to [3, 3, 4])

Так что в вашем случае вы бы позвонили:

number_to_phone('0541754301', :groupings => [4, 3, 3], :delimiter => "-") 

произвести:

0541-754-301

9 голосов
/ 19 декабря 2012

Или, поскольку вы не ищете ничего необычного, например скобки или «+», а просто дефисы между числовыми группами, вы можете:

"0541754301".unpack('A4A3A3').join('-')
8 голосов
/ 25 октября 2009

Вы можете использовать регулярное выражение для переформатирования строки. Для примера, который вы дали:

"0541754301".sub(/(\d{4})(\d{3})(\d{3})/, "\\1-\\2-\\3") # returns: "0541-754-301"
3 голосов
/ 04 ноября 2011

Есть фальшивый и телефон драгоценные камни доступны.

Phony.formatted('18091231234', :format => :international).should == '+1 809 123 1234'

или одновременно

phone.format("+ %c (%a) %n") # => "+ 385 (91) 5125486"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...