を使用せずに、文字列内の大文字 (A ~ Z) の後の最初の数字 (0 ~ 9) をアスタリスクに変更する方法を考えていましたsub
。必要に応じて、これをメソッドに入れることができreplace_digit
ます。
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?
EDIT2:
これも、後読みなしで機能します。a[/[A-Z](\d)/, 1] = "*"
于 2012-12-06T01:43:30.553 に答える