Я бы использовал регулярные выражения (имейте в виду, что это может стать медленным, если вы делаете много итераций)
'1 026 personnes aiment ça'.match(/\d{1,3} \d{1,3}/)
.to_s
.tr(' ','')
.to_i
# => 3123
Это будет:
- соответствует первым 2группы из 3 или менее чисел
- преобразуют его в строку (у MatchData есть метод только для преобразования результата в строку или массив)
- замена пробелов пустой строкой
преобразовать строку в целое число
'1 026 человек aiment ça'.match (/ \ d {1,3} \ d {1,3} /)
Учитывая, что это молча провалится, я бы изменил регулярное выражение в зависимости от того, какой текст вы ожидаете.
Например;если вы ожидаете, что первый символ строки будет цифрой, я бы добавил ^
(обозначает начало строки).
'1 026 personnes aiment ça'.match(/^\d{1,3} \d{1,3}/)
.to_s
.tr(' ','')
.to_i