Sono nuovo di Ruby e ho sempre utilizzato String.scan
per cercare la prima occorrenza di un numero. È abbastanza strano che il valore restituito sia nell'array nidificato, ma io vado semplicemente a [0][0]
per i valori che voglio. (Sono sicuro che abbia lo scopo, solo che non l'ho ancora usato.)Qual è la differenza tra scansione e corrispondenza sulla stringa di Ruby
Ho appena scoperto che esiste un metodo String.match
. E sembra essere più conveniente perché l'array restituito non è nidificato.
Ecco un esempio dei due, prima IS Scan:
>> 'a 1-night stay'.scan(/(a)?(\d*)[- ]night/i).to_a
=> [["a ", "1"]]
poi è partita
>> 'a 1-night stay'.match(/(a)?(\d*)[- ]night/i).to_a
=> ["a 1-night", "a ", "1"]
ho controllare l'API, ma non posso davvero differenziare la differenza, come entrambi si riferivano a "abbinare il modello".
Questa domanda è, per semplice curiosità, su cosa può fare scan
match
e viceversa. Qualunque scenario specifico che solo uno può realizzare? match
è inferiore a scan
?