-2

を使用せずに、文字列内の大文字 (A ~ Z) の後の最初の数字 (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?

EDIT2:

これも、後読みなしで機能します。a[/[A-Z](\d)/, 1] = "*"

于 2012-12-06T01:43:30.553 に答える