-2

我想知道如何将字符串中大写字母(AZ)之后的第一个数字(0-9)更改为星号而不使用sub. 如果需要,您可以将其放入一个调用的方法中replace_digit

4

1 回答 1

2
a = "not here 0 but here A5 and here B7, okay?"
begin
  loop do
    a[/(?<=[A-Z])\d/] = "*"
  end
rescue IndexError
end
puts a
# not here 0 but here A* and here B*, okay?

没有sub:)

编辑:我刚刚注意到“第一个数字” - 所以只需删除循环;如果您可以假设总会有匹配项,您也可以删除异常处理。

a = "not here 0 but here A5 and here B7, okay?"
a[/(?<=[A-Z])\d/] = "*"
puts a
# not here 0 but here A* and here B7, okay?

编辑2:

这也有效,无需向后看:a[/[A-Z](\d)/, 1] = "*"

于 2012-12-06T01:43:30.553 回答