【发布时间】:2011-12-21 01:48:04
【问题描述】:
我是 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 的劣势吗?
【问题讨论】: