Rubyコードにパスワードの代わりにsharp'sを入れたい
puts " found password: #{pass.tr('?','#')}"
パスワードの文字と同じ数のシャープ '#' 文字出力が必要です。
それを正しく行う方法は?
このメソッド.tr
は特定の文字を交換することを目的としています。ワイルドカード マッチは実行できません。多くの文字をカバーするように拡張したとしても、システムのパスワードで許可されている特殊文字を見落としたり、忘れたりするリスクがあります。
あなたが持っているものの簡単な変形は、.gsub
代わりに使用することです:
pass.gsub(/./,'#')
これは正規表現を使用して、交換する文字のグループを見つけます。単純な正規表現は、任意の1 文字に/./
一致します。正規表現に関するRuby コア ドキュメントには、正規表現をあまり使用したことがない場合に備えて、簡単な紹介が含まれています。