我对Ruby很陌生,我对从字符串中提取内容感到怀疑。
我有一个包含以下值的字符串。
Booking ID: 101 Name: Booking
我需要从这个字符串中提取id。
这些步骤应该类似于第一次出现的#34; ID [space]"到下一个[空间]。
有没有办法在Ruby中做到这一点?
答案 0 :(得分:7)
正确的方法是使用 Regex
查找“预订ID:”之后的数字
booking_title = "Booking ID: 101 Name: Booking"
bookind_id = booking_title.match(/(?:Booking ID:\s)([\d]+)/)
找到字符串
中的第一个数字booking_title = "Booking ID: 101 Name: Booking"
bookind_id = booking_title.match(/[\d]+/)
缩短语法
booking_title = "Booking ID: 101 Name: Booking"
bookind_id = booking_title[/[\d]+/]
答案 1 :(得分:3)
您可以使用正则表达式:
irb
irb(main):001:0> "Booking ID: 101 Name: Booking".match /\d+/
=> #<MatchData "101">
irb(main):002:0> "Booking ID: 101 Name: Booking".match(/\d+/).to_s
=> "101"
答案 2 :(得分:0)
你也可以通过分割来实现,正则表达式取决于预订ID的单词总是相同的:....名称:....以及以下内容也应该相同:
text = "Booking ID: 101 Name: Booking"
booking_id = text.split(":")[1].split("Name")[0].to_i # 101
OR
booking_id = text.split(":")[1].strip.split(" ")[0].to_i
你有很多方法可以做到。
答案 3 :(得分:0)
booking_title = "Booking ID: 101 Name: Booking"
booking_id = booking_title.scan(/\d/).join('')