I am new to Ruby and has always used String.scan
to search for the first occurrence of a number. It is kind of strange that the returned value is in nested array, but I just go [0][0]
for the values I want. (I am sure it has its purpose, just that I haven't used it yet.)
I just found out that there is a String.match
method. And it seems to be more convenient because the returned array is not nested.
Here is an example of the two, first is scan:
>> 'a 1-night stay'.scan(/(a )?(d*)[- ]night/i).to_a
=> [["a ", "1"]]
then is match
>> 'a 1-night stay'.match(/(a )?(d*)[- ]night/i).to_a
=> ["a 1-night", "a ", "1"]
I have check the API, but I can't really differentiate the difference, as both referred to 'match the pattern'.
This question is, for simply out curiousity, about what scan
can do that match
can't, and vise versa. Any specific scenario that only one can accomplish? Is match
the inferior of scan
?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…