【发布时间】:2019-08-05 09:50:07
【问题描述】:
长度为4个或以上的字符串需要按以下格式返回:
"#{firstLetter}#{string.length-2}#{lastLetter}"
InputString = 堆栈溢出
预期字符串 = s11w
这是产生正确预期输出的代码。
string.gsub /(\w)(\w+{2})(\w)/ do |word|
"#{$1}#{word.length-2}#{$3}"
end
我有点明白这里发生了什么,但不明白正则表达式与 $1 和 $3 的使用之间的确切关系。有点明白了……但还不足以以我自己的方式使用它来解决新问题。
【问题讨论】:
-
很简单:
$N表示“比赛中第 N 个捕获组的内容”。它在docs,顺便说一句。 -
这个正则表达式很奇怪。为什么
\w+{2}?它有效,但是...... Weeeird。并且取决于引擎的实现方式,可能效率低下。我会写\w{2,}... -
在文档中错过了它。感谢您对我非常愚蠢的问题的帮助。