0
문자열의 모든 변수를 확장하여 문자열의 형식을 지정해야합니다.문자열의 모든 환경 변수 확장 (형식 문자열)
예를 들어내가이 문자열이있는 경우 :
%homedrive%\blabla\%Username%\blabla\%computername%\%PercentCharacters%blabla
내가 얻기 위해 문자열을 포맷 할이 :
X:\blabla\MyUsername\blabla\MyComputername\%PercentCharacters%blabla
내가 변수를 확장하는 방법을 알고
하지만, 이는 더 나은 개선이다 이 경우에는 어떻게해야합니까? 어쩌면 정규 표현식 그룹을 사용하여 모든 % vars %를 일치시키고 일치 항목이 실제 var인지 아니면 퍼센트 문자인지 확인할 수 있습니까? 그것을하는 방법?
누군가 예를 보여줄 수 있습니까?
UPDATE : 이것은 내 의도이다
, 나는 비 실시간 바르 보존 바르 실제 환경을 확장 할 수있어,하지만 난 감지하려고 stucked 해요 "\ 즐 \" 동일한 그룹의 파트를 문자열에 추가하십시오.
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
고맙지 만 코드가 도움이되지 않습니다. "바꾸지 않는 이유는 무엇입니까?": "실제가 아닌"변수를 대체하려고하면 제안이 실패하고 시스템에 사용자가 추가 한 사용자 환경 변수가있을 수 있으며 실제로는 추가하지 않으려 고합니다. 문자열을 .replace 함수 35 회 기본 Windows 환경 변수 (게으른 것들에 대한되지 않습니다)에 대한 x35 번 그것은 초보자 프로그래머조차도 귀하의 코드 제안을 사용하는 것이 너무 정확하지, 내가 regex (예를 들어 이것을 사용하여 향상된 방법이 필요) 하지만 어쨌든 고마워. – ElektroStudios
regex를 사용하지 않았다면, instr과 mid는 루프에서 작동 할 것입니다. – prospector
다시 한번 감사 드리지만, VB6 함수가 아닌 vb.net이라는 대체 코드를 사용하는 것이 더 많거나 적습니다. 미안 해요 기억이 필요합니다. 천천히 대체 (또는 왼쪽, 중순) 또는 참조/Microsoft.VisualBasic6 libray 오래된 함수를 사용하려면 및/또는 루프를 수행 할 가져 오기 사용하지 않는 이렇게 향상된 방법을 찾고 있어요. 문자열. – ElektroStudios