Ruby on rails 从特定字符串中提取信息
我是RubyonRails新手。我已经通过表格中的POST传递了ISDCode、区号和电话号码 我有一个字符串,其中包含在变量ISDCode中传递的格式countryName(ISDCode)的信息。例如“美利坚合众国(+1)” 现在我只想在数据库中保存ISDCode的值 从字符串中提取ISD代码的理想方法是什么 我应该在用户发布表单之前提取Javascript中的ISD代码,还是应该使用回调在模型中提取它Ruby on rails 从特定字符串中提取信息,ruby-on-rails,ruby,regex,Ruby On Rails,Ruby,Regex,我是RubyonRails新手。我已经通过表格中的POST传递了ISDCode、区号和电话号码 我有一个字符串,其中包含在变量ISDCode中传递的格式countryName(ISDCode)的信息。例如“美利坚合众国(+1)” 现在我只想在数据库中保存ISDCode的值 从字符串中提取ISD代码的理想方法是什么 我应该在用户发布表单之前提取Javascript中的ISD代码,还是应该使用回调在模型中提取它 正则表达式也是提取信息的唯一方法吗?使用正则表达式匹配ISDcode "United S
正则表达式也是提取信息的唯一方法吗?使用正则表达式匹配ISDcode
"United States of America(+1)" =~ /(\+[\d]+)/
puts $1
使用正则表达式匹配ISDcode
"United States of America(+1)" =~ /(\+[\d]+)/
puts $1
由于字符串来自自动完成,因此ISDcodes应该存在于数据库中。因此,最好的解决方案可能是包含一个额外的参数(带有一个隐藏的输入),比如isdcode_id,然后您只需在模型中使用isdcode_id。这样可以避免解析字符串的麻烦
如果这不可行,正则表达式可能是提取信息的最佳方法。您可以重写模型中的setter来执行此操作。由于字符串来自自动完成,因此数据库中应该存在ISDcodes。因此,最好的解决方案可能是包含一个额外的参数(带有一个隐藏的输入),比如isdcode_id,然后您只需在模型中使用isdcode_id。这样可以避免解析字符串的麻烦
如果这不可行,正则表达式可能是提取信息的最佳方法。您可以重写模型中的setter来执行此操作。如果您只想获得ISD代码,这应该可以:
"United States of America(+1)".gsub!(/[^\+\d]/, "")
注意:您可以在视图帮助程序中使用它,只需在持久化之前调用字符串上的帮助程序如果您只想获得ISD代码,这应该可以:
"United States of America(+1)".gsub!(/[^\+\d]/, "")
注意:您可以在视图帮助器中设置此选项,并在持久性回答之前调用字符串上的帮助器,但我想提供一种获取ISD代码的替代方法:
isd = "United States(+1)"
puts isd[/[+]*[\d]{1,4}/] # +1
此regexp匹配:
0001
+1
+01
等等。已经回答了,但我想提供一种获取ISD代码的替代方案:
isd = "United States(+1)"
puts isd[/[+]*[\d]{1,4}/] # +1
此regexp匹配:
0001
+1
+01
等等。我更喜欢使用js在客户端提取信息,并在模型中进行验证。通过这种方式,您可以得到您想要的,并确保它是正确的。我更喜欢使用js在客户端提取信息,并在模型中进行验证。通过这种方式,您可以得到您想要的,并确保它是正确的。为了便于在一个文本字段中使用自动完成,我使用了CountryName(ISDCode)格式。我使用了CountryName(ISDCode)格式便于在一个文本字段中使用auto complete。我通常避免在客户端进行验证,因为客户端可以通过关闭浏览器上的javascript很容易地进行欺骗,但无论如何还是要感谢说“在模型中进行验证”,我的意思是在服务器端!我通常避免在客户端进行验证,因为客户端可以通过关闭浏览器上的javascript轻松进行欺骗,但无论如何,还是要感谢您说“在模型中进行验证”,我的意思是在服务器端!