除了数字逗号和小数点之外,Rails都会删除所有数据

时间:2015-03-06 21:17:17

标签: ruby-on-rails ruby

嗨,我在最后一小时一直在努力奋斗,而且我已经没有了。我究竟如何从rails字符串中删除除数字,逗号和小数点以外的所有内容?我到目前为止最接近的是: -

rate = rate.gsub!(/[^0-9]/i, '')

除了数字之外,它除去了所有内容。当我尝试在表达式中添加逗号时,一切都被剥离了。我从其他地方得到了上述内容,据我所知:

^ =不

逗号左侧的所有内容都被“''中的内容所取代。在右边

不知道/我做什么

我对gsub很新。有没有人知道有关构建表达式的好教程?

谢谢

3 个答案:

答案 0 :(得分:3)

尝试:

rate = rate.gsub(/[^0-9,\.]/, '')

基本上,您知道^表示在您使用的字符类括号 []内时不是,然后您只需将逗号添加到列表中即可。小数需要使用反斜杠进行转义,因为在正则表达式中,它们是一个特殊字符,表示"匹配任何内容"。

另外,请注意您使用的是gsub还是gsub!

gsub!有爆炸声,所以它会编辑你传入的字符串的实例,而不是返回另一个。

因此,如果使用gsub!,那就是:

rate.gsub!(/[^0-9,\.]/, '')

rate会被改变。

如果您不想更改原始变量,那么您可以使用没有爆炸的版本(并将其分配给不同的变量):

cleaned_rate = rate.gsub!(/[^0-9,\.]/, '')

我只是谷歌搜索教程。我还没用过。正则表达式有很多时间和反复试验(和表格翻转)。

这是一个很酷的工具,可以在它上面使用迷你作弊表,用于红宝石,可以让你快速编辑和测试你的表达:

http://rubular.com/

答案 1 :(得分:1)

您只需在方括号表达式中添加逗号和句点:

rate.gsub(/[^0-9,.]/, '')

对于数字和符号的大小写不敏感,您不需要i

regular expressionsregex等有很多信息。也许会搜索那些而不是gsub

答案 2 :(得分:1)

您可以使用:

rate = rate.gsub!(/[^0-9\.\,]/g,'')

另外,请查看此内容以了解有关正则表达式的更多信息: http://www.regexr.com/