如何从字符串中删除除数字,“,”和“。”之外的所有字符。用Ruby?

时间:2013-07-27 15:31:10

标签: ruby regex string parsing

请帮我一个正则表达式来完成下一个任务:我在某个表中有一个'cost'列,但其值不同:

['1.22','1,22','$1.22','1,22$','$ 1.22']

我需要删除除digits,以及.之外的所有字符。所以我需要得到一个总是可以解析为Float的值。

7 个答案:

答案 0 :(得分:12)

a.map {|i| i.gsub(/[^\d,\.]/, '')}
# => ["1.22", "1,22", "1.22", "1,22", "1.22"] 

答案 1 :(得分:10)

试试这个:

yourStr.gsub(/[^0-9,.]/, "")

答案 2 :(得分:1)

提取数字:

a = ["1.22", "1,22", "$1.22", "1,22$", "$ 1.22"]
a.map {|s| s[/[\d.,]+/] }
#=> ["1.22", "1,22", "1.22", "1,22", "1.22"]

假设逗号,应该被视为小数点.(如'1,22' - > 1.22),这应该将您的值转换为float:

a = ["1.22", "1,22", "$1.22", "1,22$", "$ 1.22"]
a.map {|s| s[/[\d.,]+/].gsub(',','.').to_f }
#=> [1.22, 1.22, 1.22, 1.22, 1.22]

答案 3 :(得分:0)

您可以用'$'

替换所有空格,''

答案 4 :(得分:0)

另一个:

a= ['1.22','1,22','$1.22','1,22$','$ 1.22']
a.map{|i| i[/\d+.\d+/]}
# => ["1.22", "1,22", "1.22", "1,22", "1.22"]

答案 5 :(得分:-1)

str = "a1234c324ee4r"    
str.delete("^0-9")

它将删除字符串中的所有字符并返回所有整数

答案 6 :(得分:-3)

“你好”.tr('el','ip')#=> “河马” 试试这个。

http://www.ruby-doc.org/core-1.9.3/String.html