Извлечение числа из строки в Ruby
Я использую этот код:
s = line.match( /ABCD(d{4})/ ).values_at( 1 )[0]
для извлечения чисел из строк, таких как:
ABCD1234
ABCD1235
ABCD1236
etc.
это работает, но мне интересно, какая еще альтернатива у меня есть для этого в Ruby?
мой код:
ids = []
someBigString.lines.each {|line|
ids << line.match( /ABCD(d{4})/ ).values_at( 1 )[0]
}
6 ответов:
есть много рубиновых способов согласно http://www.ruby-forum.com/topic/125709
line.scan(/\d/).join('')
line.gsub(/[^0-9]/, '')
line.gsub(/[^\d]/, '')
line.tr("^0-9", '')
line.delete("^0-9")
line.split(/[^\d]/).join
line.gsub(/\D/, '')
попробуйте каждый на консоли.
также проверьте контрольный отчет в этом сообщении.
your_input = "abc1cd2" your_input.split(//).map {|x| x[/\d+/]}.compact.join("").to_i
Это должно работать.