欧洲电话与轨道形成

时间:2011-04-25 06:10:50

标签: ruby-on-rails ruby

使用rails,我可以使用number_to_phone

将数字格式化为美国电话号码

我正在使用欧洲电话格​​式,这意味着我想要使用以下格式对数字进行分组,n是一个变量:

(n*x) xxx-xxx

一些例子

6365555796 => (6365) 555-796

665555796  => (665) 555-796

如何使用最新的rails 3.0.7实现这一目标?

3 个答案:

答案 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