0

我需要扩展字符串中的所有变量来格式化字符串。

例如,如果我有这个字符串:

%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
4

1 回答 1

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")
于 2013-07-18T02:37:12.373 回答