我是Ruby新手,总是用String.scan
来搜索第一个出现的数字.奇怪的是,返回的值在嵌套数组中,但我只 Select [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
差吗?