Я новичок в Ruby и всегда использовал String.scan
для поиска первого вхождения числа. Странно, что возвращаемое значение находится в вложенном массиве, но я просто иду [0][0]
для значений, которые я хочу. (Я уверен, что это имеет свою цель, просто я еще не использовал его.)
Я только узнал, что существует метод String.match
. И это кажется более удобным, потому что возвращенный массив не вложен.
Вот пример двух: сначала сканирование:
>> 'a 1-night stay'.scan(/(a )?(\d*)[- ]night/i).to_a
=> [["a ", "1"]]
то соответствует
>> 'a 1-night stay'.match(/(a )?(\d*)[- ]night/i).to_a
=> ["a 1-night", "a ", "1"]
Я проверяю API, но я не могу отличить различие, так как оба относятся к "соответствовать шаблону".
Этот вопрос, просто из любопытства, о том, что scan
может сделать, что match
не может, и наоборот наоборот. Любой конкретный сценарий, который может выполнить только один? Является match
ниже scan
?