我有一个字符串str = "$ 9.0 / hr"
或str = "$9.0/hr"
。在这种情况下,我只想要这个整数值9.0
语言是Ruby 1.9.2
答案 0 :(得分:7)
我会用:
number = str[ /\d*(?:\.\d+)?/ ]
或者,如果小于1.0的值需要前导0,
number = str[ /\d+(?:\.\d+)?/ ]
如果您在字符串中可能有其他数字,并且只希望(第一个)在其前面有一个美元符号的数字:
number = str[ /\$\s*(\d+(?:\.\d+)?)/, 1 ]
如果保证之后必须有(必须)小数位和数字:
number = str[ /\$\s*(\d+\.\d+)/, 1 ]
希望您可以混合搭配其中一些解决方案,以获得所需。
答案 1 :(得分:6)
没有正则表达式:
str.delete("^0-9.")
答案 2 :(得分:4)
如果您的价格始终为dollars.cents
格式(可能是价格),请使用此正则表达式:
"$ 9.0 / hr".match(/\d+\.\d+/)[0] # => 9.0
"$9.0/hr".match(/\d+\.\d+/)[0] # => 9.0
否则你应该从Phrogz的答案中接受正则表达式。
答案 3 :(得分:1)
我不知道红宝石,但正则表达式应该是\d+(?:\.\d+)?
。这也适用于"$9/hr"