0

Rubyコードにパスワードの代わりにsharp'sを入れたい

puts "        found password: #{pass.tr('?','#')}"

パスワードの文字と同じ数のシャープ '#' 文字出力が必要です。

それを正しく行う方法は?

4

1 に答える 1

1

このメソッド.trは特定の文字を交換することを目的としています。ワイルドカード マッチは実行できません。多くの文字をカバーするように拡張したとしても、システムのパスワードで許可されている特殊文字を見落としたり、忘れたりするリスクがあります。

あなたが持っているものの簡単な変形は、.gsub代わりに使用することです:

pass.gsub(/./,'#')

これは正規表現を使用して、交換する文字のグループを見つけます。単純な正規表現は、任意の1 文字に/./一致します。正規表現に関するRuby コア ドキュメントには、正規表現をあまり使用したことがない場合に備えて、簡単な紹介が含まれています。

于 2014-04-15T05:54:06.397 に答える