我有一串交替的数字和字母。我想用它前面的字母数替换每个字符。例如,2a3b
应该返回aabbb
.
首先,如果我这样做:
"2a3b".scan(/(\d)(.)/) do |count, char|
puts char * count.to_i
end
我得到:
aa
bbb
但是,如果我这样做:
"2a3b".gsub(/(\d)(.)/) do |count, char|
char * count.to_i
end
我收到一个错误:
NoMethodError: undefined method `*' for nil:NilClass
它们不应该表现相同吗(更新:我的意思是,接受捕获组作为块参数)?
更新:(解决方法,有效)
"2a3b".gsub(/(\d)(.)/) do |match|
$2 * $1.to_i
end
返回:
"aabbb"
正如预期的那样。