“红宝石”在使用捕获之前检查正则表达式匹配的方法
在 Ruby Sinatrat 应用程序中,我希望检索与我的输入中可能存在或不存在的字符串关联的一些数字。例如:“Cruisers #”可能存在也可能不存在,并且 # 可以是任何整数。
此外,正常英文数字表示法中的逗号(1,000 表示一千)中会有一个句号(1.000 表示一千)。
match = /Cruiser\s*([\d.]*)/m.match(report)
match ?
self.cruiser = match.captures[0].gsub(".", "") :
self.cruiser = 0
似乎应该有一种更紧凑的“Ruby”方式来做到这一点 - 具体来说,我正在寻找一种将 regex.match 调用和条件赋值组合到一个语句中的方法。这是可能的,还是任何其他重构?谢谢。
In a Ruby Sinatrat app, I'm looking to retrieve some numbers associated with strings that may or may not be present in my input. For example: "Cruisers #" might or might not be present, and the # may be any integer.
In addition, where commas would be in normal English number notation (1,000 for one thousand), there will be a period in this notation (1.000 for one thousand).
match = /Cruiser\s*([\d.]*)/m.match(report)
match ?
self.cruiser = match.captures[0].gsub(".", "") :
self.cruiser = 0
Seems like there should be a more compact, 'Ruby'ish way to do this - specifically, I'm looking for a way to combine the regex.match call and the conditional assignment into one statement. Is this, or any other refactoring, possible here? Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
印刷:
prints:
有问题。已更新。
There was a problem. Updated.
以下 1 内衬就是您所需要的
The following 1 liner is all you need