2011-04-25 80 views
1

使用Rails在格式化,我能格式化一个数字,美国电话号码的使用使用欧洲手机格式number_to_phone欧洲手机滑轨

我',这意味着我要组号码,格式如下,n是一个变量:

(n*x) xxx-xxx 

一些例子

6365555796 => (6365) 555-796 

665555796 => (665) 555-796 

如何实现与最新的轨道3.0.7?

+1

您可以举几个例子来加深理解吗?特别是对于本节(n * x) – intellidiot 2011-04-25 06:45:07

回答

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" 

...

2

我认为你必须为此编写自己的方法,因为我没有内置的方法,我认为你可以通过编写合适的正则表达式来实现期望的目标。

你试过validate_format_for有:有ü可以写具体regualr表达它[见本段] http://ruby-forum.com/topic/180192编写自己的助手吧

检查这里这颗宝石是你所需要的http://github.com/floere/phony

+0

afridi,为什么不将这些注释转移到您的答案中,以使其更加完整和可读? – oma 2011-04-25 08:56:17

0

更快的方法:

def to_european_phone_format(number) 
    "(#{number/10**6}) #{number/10**3%10**3}-#{number%10**3}" 
end 
+0

不错;)这里不是“%10 ** 6”多余? – 2011-04-25 10:40:39

+0

是的,是的。纠正。谢谢 :) – intellidiot 2011-04-25 11:43:03