Ruby on rails 使用rails进行欧洲电话格式化

Ruby on rails 使用rails进行欧洲电话格式化,ruby-on-rails,ruby,Ruby On Rails,Ruby,使用rails,我可以使用 我使用的是欧洲电话格式,这意味着我要将号码分组为以下格式,n是一个变量: (n*x) xxx-xxx 一些例子 6365555796 => (6365) 555-796 665555796 => (665) 555-796 如何使用最新的rails 3.0.7实现这一点?我认为您必须为此编写自己的方法。据我所知,没有内置的方法,我认为您可以通过为此编写适当的正则表达式来实现所需的功能 您是否尝试过验证\u format\u for with:在那里

使用rails,我可以使用

我使用的是欧洲电话格式,这意味着我要将号码分组为以下格式,
n
是一个变量:

(n*x) xxx-xxx
一些例子

6365555796 => (6365) 555-796

665555796  => (665) 555-796

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

我认为您必须为此编写自己的方法。据我所知,没有内置的方法,我认为您可以通过为此编写适当的正则表达式来实现所需的功能

您是否尝试过验证\u format\u for with:在那里您可以为它编写特定的正则表达式[参见此]以编写自己的帮助程序


检查这个gem这里是你需要的

我认为你必须为此编写你自己的方法。据我所知,没有内置的方法,我认为你可以通过为此编写适当的正则表达式来实现期望的结果

您是否尝试过验证\u format\u for with:在那里您可以为它编写特定的正则表达式[参见此]以编写自己的帮助程序

检查这个宝石这里是你需要的

那么:

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"

那么:

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"
…一种更快的方法:

def to_european_phone_format(number)
  "(#{number/10**6}) #{number/10**3%10**3}-#{number%10**3}"
end
更快的方法:

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

为了更好地理解,你能举几个例子吗?特别是(n*x)部分,你能举几个例子来更好地理解吗?特别是对于(n*x)部分,为什么不将这些注释移动到您的答案中,使其更完整和可读?afridi,为什么不将这些注释移动到您的答案中,使其更完整和可读?很好;)“%10**6”在这里不是多余的吗?是的,它是多余的。更正。谢谢:)很好;)“%10**6”在这里不是多余的吗?是的,它是多余的。更正。谢谢:)