我正在寻找一个很好的紧密正则表达式来解决这个问题。我正在寻找将 UNC 重新格式化为 Uri
问题:
UNC 目录需要重新格式化为 Uri
\\服务器\d$\x\y\z\AAA
需要看起来像:
我正在寻找一个很好的紧密正则表达式来解决这个问题。我正在寻找将 UNC 重新格式化为 Uri
问题:
UNC 目录需要重新格式化为 Uri
\\服务器\d$\x\y\z\AAA
需要看起来像:
我认为在这种情况下,替换比正则表达式更容易编写和理解。鉴于:
string input = "\\\\server\\d$\\x\\y\\z\\AAA";
您可以进行双重替换:
string output = String.Format("http:{0}", input.Replace("\\d$\\x\\y", String.Empty).Replace("\\", "/"));
.Net 框架支持一个名为System.Uri的类,它可以进行转换。它更简单并且可以处理转义情况。它处理 UNC、Uri 格式的本地路径。
C#:
Console.WriteLine((new System.Uri("C:\Temp\Test.xml")).AbsoluteUri);
电源外壳:
(New-Object System.Uri 'C:\Temp\Test.xml').AbsoluteUri
输出:
file:///C:/Temp/Test.xml
^(\\\\\w+)\\.*(\\\w\\\w+)$
第一场比赛:\\server
第二场比赛:\z\AAA
连接到一个字符串,然后http:
添加到 get http:\\server\z\AAA
。替换\
为/
。
两个操作:
首先,替换"(.*)d\$\\x\\y\\(.*)"
为"http:\1\2"
- 这将清除d$\x\y\
,并在http:
.
然后替换\\
为/
完成工作。
任务完成!
编辑:我假设在 C# 中,“ \1
”包含第一个带括号的匹配项(在 Perl 中是这样)。如果没有,那么应该清楚上面的意思:)