Есть много способов добраться до Рима.
Начиная с:
foo = 'ALTVALLEDAOSTA000020191001.json'
Удаление расширенного имени файла + расширение до basename
, затем с помощью регулярное выражение:
ymd = /(\d{4})(\d{2})(\d{2})$/
ext = File.extname(foo)
File.basename(foo, ext) # => "ALTVALLEDAOSTA000020191001"
File.basename(foo, ext)[ymd, 1] # => "2019"
File.basename(foo, ext)[ymd, 2] # => "10"
File.basename(foo, ext)[ymd, 3] # => "01"
Использование регулярного выражения для всего имени файла, чтобы получить только год:
ymd = /^.*(\d{4})/
foo[ymd, 1] # => "1001"
или извлечение года, месяца и дня:
ymd = /^.*(\d{4})(\d{2})(\d{2})/
foo[ymd, 1] # => "2019"
foo[ymd, 2] # => "10"
foo[ymd, 3] # => "01"
Использование String's unpack
:
ymd = '@18A4'
foo.unpack(ymd) # => ["2019"]
или:
ymd = '@18A4A2A2'
foo.unpack(ymd) # => ["2019", "10", "01"]
Если строки имеют одинаковую длину и формат, я бы работал с unpack
, потому что, если я правильно помню, это самый быстрый, за которым следует разрезание строк, с привязкой к последующим не привязанным регулярным выражениям.