Ответ 1
a.map {|x| x[/\d+/]}
Я использую этот код:
s = line.match( /ABCD(\d{4})/ ).values_at( 1 )[0]
Чтобы извлечь числа из строк, например:
ABCD1234
ABCD1235
ABCD1236
и т.д..
Это работает, но мне интересно, какая другая альтернатива мне приходится делать в Ruby?
Мой код:
ids = []
someBigString.lines.each {|line|
ids << line.match( /ABCD(\d{4})/ ).values_at( 1 )[0]
}
a.map {|x| x[/\d+/]}
Существует много способов Ruby по 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/, '')
Попробуйте каждую консоль.
Также проверьте отчет в этом сообщении.
существует еще более простое решение
line.scan(/\d+/).first
Другим решением может быть запись:
myString = "sami103"
myString.each_char{ |c| myString.delete!(c) if c.ord<48 or c.ord>57 } #In this case, we are deleting all characters that do not represent numbers.
Теперь, если вы наберете
myNumber = myString.to_i #or myString.to_f
Это должно вернуть
your_input = "abc1cd2"
your_input.split(//).map {|x| x[/\d+/]}.compact.join("").to_i
Это должно работать.
Чтобы извлечь номер из строки, используйте следующее:
str = 'abcd1234'
/\d+/.match(str).try(:[], 0)
Он должен вернуть 1234