文字列をフォーマットするには、文字列内のすべての変数を展開する必要があります。
たとえば、次の文字列がある場合:
%homedrive%\blabla\%Username%\blabla\%computername%\%PercentCharacters%blabla
これを取得するために文字列をフォーマットしたい:
X:\blabla\MyUsername\blabla\MyComputername\%PercentCharacters%blabla
変数を拡張する方法は知っていますが、この場合、どの方法を改善すればよいでしょうか? おそらく正規表現グループを使用して、すべての %vars% に一致し、一致が実際の変数であるかパーセント文字であるかを確認しますか? どうやってするの?
誰かが例を示すことができますか?
アップデート:
これが私の意図です。実際の環境変数を拡張して非現実の変数を保持することはできますが、同じグループ内の「\bla\」部分を検出して文字列に追加しようとして行き詰まりました。
Dim str As String = "%homedrive%\bla\%username%\bla\%computername%\%chars%\bla"
' MsgBox(Expand_Variables(str))
Private Function Expand_Variables(ByVal str As String) As String
Dim TempStr As String = String.Empty
Dim match As System.Text.RegularExpressions.Match = System.Text.RegularExpressions.Regex.Match(str, <a><![CDATA[(%\w+%)]]></a>.Value)
Do While match.Success
TempStr &= Environment.ExpandEnvironmentVariables(match.NextMatch().ToString)
Loop
Return TempStr
End Function
更新 2:
完了しましたが、コードを改善できるかどうか知りたいです:
Public Function Expand_Variables_In_String(ByVal str As String) As String
Dim match As System.Text.RegularExpressions.Match = _
System.Text.RegularExpressions.Regex.Match(str, "(%\w+%)")
Do While match.Success
str = str.Replace(match.ToString, Environment.ExpandEnvironmentVariables(match.ToString))
match = match.NextMatch()
Loop
Return str
End Function