Soy nuevo en Ruby y siempre he usado String.scan
para buscar la primera aparición de un número. Es extraño que el valor devuelto esté en una matriz anidada, pero acabo de ir al [0][0]
para obtener los valores que quiero. (Estoy seguro de que tiene su propósito, solo que no lo he usado todavía)Cuál es la diferencia entre el escaneo y el partido en la cadena Ruby
Me acabo de enterar de que hay un método String.match
. Y parece ser más conveniente porque la matriz devuelta no está anidada.
Aquí se muestra un ejemplo de los dos, primero es escanear:
>> 'a 1-night stay'.scan(/(a)?(\d*)[- ]night/i).to_a
=> [["a ", "1"]]
entonces es partido
>> 'a 1-night stay'.match(/(a)?(\d*)[- ]night/i).to_a
=> ["a 1-night", "a ", "1"]
tengo comprobar la API, pero realmente no puedo distinguir la diferencia, como se ambos se refieren a "coincidir con el patrón".
Esta pregunta es, simplemente por curiosidad, sobre qué puede hacer scan
que no puede, y viceversa. Cualquier escenario específico que solo uno puede lograr? ¿Es match
el inferior de scan
?