2

次のように、json文字列内の特定のパスワードタイプの単語を覆い隠したいと思います。

"password":"foobar1"

に置き換えられます

"password":"XXXXX"

また

"pwd":"foobar1"

に置き換えられます

"pwd":"XXXXX"

次の Pattern と replaceAll メソッドを使用してそれを行うことができました

REGEX_JSON_PASSWORD = 
    Pattern.compile("\"(?i)(password|pwd)\":\"[\\w\\p{Punct}&&[^&]]*?\"");
replacementString = 
    REGEX_JSON_PASSWORD.matcher(returnMe).replaceAll("\"$1\":\"XXXXXXXXXXXXXXXX\"");

置換文字列に二重引用符を追加する必要はありませんが、追加しないと、

pwd:foobar1 

(引用符なし)

上記よりも効率的に replaceAll を実装する方法はありますか?

4

3 に答える 3

1

事実、文字列の置換は正規表現を使ったほうがうまくいきます。

私はあなたがそれを釘付けにした次のように思います:

REGEX_JSON_PASSWORD = Pattern.compile("\"(?i)(password|pwd)\":\"[\\w\\p{Punct}&&[^&]]*?\"");
replacementString =  REGEX_JSON_PASSWORD.matcher(returnMe).replaceAll("\"$1\":\"XXXXXXXXXXXXXXXX\"");

REGEX_JSON_PASSWORD一度インスタンス化したものを保持し、replacementString各文字列に適用する場合。

しかし、gson などの JSON パーサーにデータをフィードする場合、JSON にシリアル化される直前にパスワード文字列を置き換えて、文字列の値を単にばかげたものに置き換えたいと思うかもしれません。ただし、それはすべてコードのコンテキストに依存します。

于 2013-06-09T23:06:47.007 に答える