我需要扩展字符串中的所有变量以格式化字符串。
例如,如果我有这个字符串:
%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
答案 0 :(得分:1)
为什么不替换?
抱歉,我没注意到它是VB.Net。我的原始答案是在C#中,我多年没有使用过VB,但这里是vb的代码。
Dim strpath as String
strpath = "%homedrive%\blabla\%Username%\blabla\%computername%\%PercentCharacters%blabla"
strpath.Replace("%homedrive%","X:").Replace("%Username%","blabla").Replace("%computername%","MyComputerName")