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

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

0541754301

我怎么能格式化它来产生这样的东西:

0541-754-301

您可以使用ActionView :: Helpers :: NumberHelper中的number_to_phone(number, options = {})方法

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

相反,您可以使用此补丁添加提供编号分组的function:

 :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

或者,既然您不是在寻找像括号或“+”这样的任何东西,而只是在数字组之间使用连字符,您可以:

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

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

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

有虚假和手机gem可供选择。

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

或者是相似的

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