#ruby-on-rails #ruby
#ruby-on-rails #ruby
Вопрос:
С помощью rails я могу форматировать номер в номер телефона в США с помощью number_to_phone
Я использую формат using european phone, что означает, что я хочу группировать номера в следующем формате, n
является переменной:
(n*x) xxx-xxx
Несколько примеров
6365555796 => (6365) 555-796
665555796 => (665) 555-796
Как добиться этого с помощью последней версии rails 3.0.7?
Комментарии:
1. Не могли бы вы, пожалуйста, привести пару примеров для лучшего понимания? Специально для раздела (n * x)
Ответ №1:
как насчет того, чтобы:
def to_phone(num)
groups = num.to_s.scan(/(.*)(d{3})(d{3})/).flatten
"(#{groups.shift}) #{groups.shift}-#{groups.shift}"
end
irb(main):053:0> to_phone 318273612
=> "(318) 273-612"
irb(main):054:0> to_phone 3182736122
=> "(3182) 736-122"
irb(main):055:0> to_phone 31827361221
=> "(31827) 361-221"
…
Ответ №2:
я думаю, вам нужно написать свой собственный метод для этого, насколько мне известно, для этого нет встроенного метода, и я думаю, вы можете достичь желаемого, написав для этого подходящее регулярное выражение.
вы пробовали validate_format_for с помощью: там вы можете написать для него конкретное регулярное выражение [см. Это]http://ruby-forum.com/topic/180192 за написание собственного помощника для него
проверьте этот драгоценный камень, вот что вам нужноhttp://github.com/floere/phony
Комментарии:
1. африди, почему бы тебе не перенести эти комментарии в свой ответ, чтобы сделать его более полным и читабельным?
Ответ №3:
Более быстрый подход:
def to_european_phone_format(number)
"(#{number/10**6}) #{number/10**3%10**3}-#{number%10**3}"
end
Комментарии:
1. приятно 😉 не является ли «% 10 **6» здесь избыточным?
2. Да, так и было. Исправлено. Спасибо 🙂