使用rails,我可以使用number_to_phone
将数字格式化为美国电话号码我正在使用欧洲电话格式,这意味着我想要使用以下格式对数字进行分组,n
是一个变量:
(n*x) xxx-xxx
一些例子
6365555796 => (6365) 555-796
665555796 => (665) 555-796
如何使用最新的rails 3.0.7实现这一目标?
答案 0 :(得分:3)
怎么样:
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"
...
答案 1 :(得分:2)
我认为你必须为此编写自己的方法,我的知识中没有内置的方法,我认为你可以通过为此编写适当的正则表达式来实现所需的方法。
你有没有尝试过validate_format_for:你可以为它编写特定的regualr表达式[见这个] http://ruby-forum.com/topic/180192为你编写自己的助手
在这里检查这个宝石是你需要的http://github.com/floere/phony
答案 2 :(得分:0)
更快的方法:
def to_european_phone_format(number)
"(#{number/10**6}) #{number/10**3%10**3}-#{number%10**3}"
end