1

次の文字列があるとします。

"/encryption:aes128 /password:<PASSWORDHERE> /log:log.txt"

これをログ ファイルに書き込む必要がありますが、パスワードをマスクする必要があります (たとえば、アスタリスクに置き換えます)。

私はこれを数行のコードで簡単に行うことができますString.IndexOfString.Replace、他の人がこれをどのように実装して、コードをできるだけ短く簡潔にするかを知りたいと思っています。1行の置換機能が最適です。

ここでの私の目標は、文字列関数を結合するいくつかの新しい手法を確認/学習することです。

RegEx の使用には関心がないことに注意してください。

4

2 に答える 2

2

アンドリューがすでに指摘しているように、ワンライナーは理解できないので、ここでは説明しません。

非正規表現アプローチを主張しました:

Dim input As String = "/encryption:aes128 /password:htzrj584372 /log:log.txt"
Dim pwdStart As Integer = input.IndexOf("password:")
If pwdStart <> -1 Then
    Dim pwdEnd As Integer = input.IndexOf(" /log:", pwdStart)
    If pwdEnd <> -1 Then
        pwdStart += "password:".Length
        Dim pwdLength = pwdEnd - pwdStart
        Dim pwd = input.Substring(pwdStart, pwdLength)
        Dim logText = input.Replace("password:" & pwd, "password:*****")
    End If
End If

パスワード自体に が含まれていると失敗することに注意してください/log:。パスワードの実際の長さがわからないため、前の部分のみがマスクされます。

于 2012-05-09T13:12:13.043 に答える
-2

Andrew Barberの考えに反して、これは正常に機能し、コードを読み取る基本的な能力さえあれば完全に理解できます。あなたは教科書のアンディの男の子を割って開けたいかもしれません。

仮定:

strArgs = "/encryption:aes128 /password:<PASSWORDHERE> /log:log.txt"

それで:

strArgs = strArgs.Replace(strArgs.Substring(strArgs.IndexOf("/password:") + 10, strArgs.IndexOf(" /log:log.txt") - strArgs.IndexOf("/password:") - 10), "********")
于 2012-05-09T19:01:21.533 に答える