我需要扩展字符串中的所有变量来格式化字符串。
例如,如果我有这个字符串:
%homedrive%\blabla\%Username%\blabla\%computername%\%PercentCharacters%blabla
我想格式化字符串以获得这个:
X:\blabla\MyUsername\blabla\MyComputername\%PercentCharacters%blabla
我知道如何扩展变量,但在这种情况下,哪种方法更好?也许使用正则表达式组来匹配所有 %vars% 并检查匹配是真正的 var 还是百分比字符?怎么做?
有人可以给我举个例子吗?
更新:
这是我的意图,我能够扩展真实环境变量,保留非真实变量,但我被困在试图检测同一组中的“\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