Ruby从字符串文本中提取id

时间:2015-04-28 10:57:12

标签: ruby-on-rails ruby

我对Ruby很陌生,我对从字符串中提取内容感到怀疑。

我有一个包含以下值的字符串。

Booking ID: 101 Name: Booking

我需要从这个字符串中提取id。

这些步骤应该类似于第一次出现的#34; ID [space]"到下一个[空间]。

有没有办法在Ruby中做到这一点?

4 个答案:

答案 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('')