使用来自ruby gsub方法和匹配块的数组结果

时间:2014-01-18 14:54:50

标签: ruby regex

我正在研究Ruby koans并找到一个让我感到困惑的人。

"one two-three".gsub(/(t\w*)/) { $1[0, 1] }
 => "one t-t"

但是,当我修改$ 1变量的返回数组时,我得到一个令人困惑的结果。

"one two-three".gsub(/(t\w*)/) { $1[1, 2] }
 => "one wo-hr"

鉴于第一个结果,我希望第二位代码返回“一个w-h”。为什么在第二个实例中返回两个字符?

1 个答案:

答案 0 :(得分:2)

你期望“一个w-h”就是这样的结果:

"one two-three".gsub(/(t\w*)/) { $1[1, 1] }

[]method on string,其中可以像这样提供范围:

str[start, length]

所以代码中的2实际上是长度(即字符数)