将字符串(包括正则表达式参数)传递给代码块

The passing of a string (incl. regex parameters) to a block of code

需要按以下格式返回长度为4个字母或以上的字符串:

"#{firstLetter}#{string.length-2}#{lastLetter}"

InputString = Whosebug

预期字符串 = s11w

这是产生正确预期输出的代码。

string.gsub /(\w)(\w+{2})(\w)/ do |word|       
      "#{}#{word.length-2}#{}"        
end

我有点明白这里发生了什么,但不明白正则表达式与 $1 和 $3 的使用之间的确切关系。有点明白了……但还不足以以我自己的方式使用它来解决新问题。

在您的正则表达式中,您有 3 个捕获组:\w\w+{2}\w。当您稍后说 $N(其中 N 是某个数字)时,您实际上指的是正则表达式中的捕获组。

String#gsub 方法会为您填充这些变量 (Ruby doc)。