在Ruby Sinatrat应用程序中,我希望检索一些与字符串相关的数字,这些字符串可能存在于我的输入中,也可能不存在。例如:"Cruisers #“可能存在,也可能不存在,#可以是任意整数。
此外,如果逗号在普通英语数字表示法中(1000换1000),则此表示法中将有句点(1000换1000)。
match = /Cruiser\s*([\d.]*)/m.match(report)
match ?
self.cruiser = match.captures[0].gsub(".", "") :
self.cruiser = 0似乎应该有一种更紧凑的,“Ruby”式的方法来做这件事--具体地说,我正在寻找一种将regex.match调用和条件赋值结合到一条语句中的方法。这或任何其他重构,在这里都是可能的吗?谢谢。
发布于 2011-04-01 11:20:28
这是个问题。已更新。
report1 = 'Cruiser 23.444.221'
report2 = 'Cruiser'
report3 = ''
report4 = '23/04/2010 Cruiser 23.444.221'
class String
def cruiser_count; self[/Cruiser\s*[\d.]*/].to_s.scan(/\d+/).join.to_i end
end
p report1.cruiser_count # => 23444221
p report2.cruiser_count # => 0
p report3.cruiser_count # => 0
p report4.cruiser_count # => 23444221发布于 2011-04-01 11:28:28
def get_cruiser(str)
if str =~ /Cruiser\s*([\d.]*)/m
$1.gsub(".","")
else
0
end
end
puts get_cruiser("Cruiser 23.444.221")
puts get_cruiser("Crusier")打印:
23444221
0发布于 2011-04-02 02:00:42
下面的1行代码就是你所需要的
'1234 Cruiser 1.222'.match(/Cruiser\s*([\d.]*)/).nil? ? 0 : $1.gsub('.', '').to_i
=> 1222https://stackoverflow.com/questions/5508727
复制相似问题