如何在Rails中格式化这个国际电话号码?

时间:2009-10-25 16:56:46

标签: ruby-on-rails ruby

如果我有这样的国际电话号码:

  

0541754301

我如何格式化它以产生这样的东西:

  

0541-754-301

4 个答案:

答案 0 :(得分:20)

您可以使用ActionView::Helpers::NumberHelper

中的number_to_phone(number, options = {})方法

然而,文档指出该方法将数字格式化为美国电话号码(例如,(555)123-9876)。

相反,您可以使用this patch添加提供编号分组的功能:

: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

答案 1 :(得分:9)

或者,既然你没有找到像括号或'+'这样的任何东西,但只是在数字组之间连字符,你可以:

"0541754301".unpack('A4A3A3').join('-')

答案 2 :(得分:8)

您可以使用正则表达式重新格式化字符串。对于您给出的示例:

"0541754301".sub(/(\d{4})(\d{3})(\d{3})/, "\\1-\\2-\\3") # returns: "0541-754-301"

答案 3 :(得分:3)

phonyphone个宝石。

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

或同时

phone.format("+ %c (%a) %n") # => "+ 385 (91) 5125486"