2015-04-28 4 views
1

Я довольно новичок в Ruby, и у меня есть сомнения относительно извлечения чего-то из строки.Идентификатор Ruby extract из текста строки

У меня есть строка со следующим значением.

Booking ID: 101 Name: Booking 

Мне нужно извлечь идентификатор из этой строки.

Этапы должны быть чем-то вроде строки извлечения из первого вхождения «ID [пробел]» в следующее [пробел].

Есть ли способ сделать это в Ruby?

+0

' 'Бронирование ID: 101 Имя: Бронирование' [/ ID: \ s + (\ S +) /, 1]' '=> "101"' – mudasobwa

ответ

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]+/] 
+0

вторая часть была то, что я хотел. Это сработало! Спасибо :-) –

+2

'booking [/ [\ d] + /]' – mudasobwa

+0

Это какой-то удивительный синтаксис. Я обновил свой ответ, спасибо. –

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" 
0

Вы можете сделать это, расколов, а также, регулярные выражения зависит, что слова всегда будут одинаковыми для бронирования ID: .... Название: .... и следующее, а также должны работать так же:

text = "Booking ID: 101 Name: Booking" 
booking_id = text.split(":")[1].split("Name")[0].to_i  # 101 

ИЛИ

booking_id = text.split(":")[1].strip.split(" ")[0].to_i 

у вас есть много способов сделать это.

+0

Вау! что помогло мне еще больше :-) спасибо! –

+0

Легко понять и построить, если вам не удобно использовать регулярное выражение. –

0
booking_title = "Booking ID: 101 Name: Booking" 

booking_id = booking_title.scan(/\d/).join('') 
Смежные вопросы