从特定字符串中提取信息

时间:2012-02-26 11:33:34

标签: ruby-on-rails ruby regex

我是ruby on rails的新手。我已经使用表格中的POST传递了参数ISDCode,AreaCode和Telephone number。

我有一个字符串,其中包含在变量ISDCode中传递的countryName(ISDCode)格式的信息。例如“美利坚合众国(+1)”。

现在我只想在数据库中保存ISDCode的值。

从字符串中提取ISD代码的理想方法是什么?

我应该在用户POST表单之前在Javascript中提取ISD代码,还是应该使用回调在模型中提取它?

正则表达式是提取信息的唯一方法吗?

5 个答案:

答案 0 :(得分:1)

使用正则表达式匹配ISDcode

"United States of America(+1)" =~ /(\+[\d]+)/
puts $1

答案 1 :(得分:1)

由于字符串来自自动完成,因此ISDcodes应存在于您的数据库中。所以最好的解决方案可能是包含一个额外的参数(带有隐藏输入),比如isdcode_id,那么你只需在模型中使用isdcode_id。这样就可以避免解析字符串的麻烦。

如果这不可行,正则表达式可能是提取信息的最佳方式。您可以覆盖模型中的setter来执行此操作。

答案 2 :(得分:1)

如果您只想单独获取ISD代码,这应该有效:

"United States of America(+1)".gsub!(/[^\+\d]/, "")

注意:你可以在你的视图帮助器中使用它,并在持久化之前调用字符串上的帮助器

答案 3 :(得分:1)

已经回答了,但我想提供一个获取ISD代码的替代方案:

    isd = "United States(+1)"
    puts isd[/[+]*[\d]{1,4}/] # +1

此正则表达式匹配: 0001 +1 +01 等

答案 4 :(得分:0)

我更喜欢使用js在客户端提取信息并在模型中进行验证。通过这种方式,你可以得到你想要的东西,并确保它是正确的。