Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 从特定字符串中提取信息_Ruby On Rails_Ruby_Regex - Fatal编程技术网

Ruby on rails 从特定字符串中提取信息

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

我是RubyonRails新手。我已经通过表格中的POST传递了ISDCode、区号和电话号码

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

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

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

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


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

使用正则表达式匹配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轻松进行欺骗,但无论如何,还是要感谢您说“在模型中进行验证”,我的意思是在服务器端!