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