正则表达式〜将UNC转换为URL

时间:2009-06-27 17:45:10

标签: c# regex uri unc

我正在寻找一个很好的紧密正则表达式来解决这个问题。我正在寻求将UNC重新格式化为Uri

问题:

需要将UNC目录重新格式化为Uri

\\服务器\ d $ \ X \ Y \Ž\ AAA

需要看起来像:

http://server/z/AAA

4 个答案:

答案 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中)。如果没有,那么应该清楚上面是什么意思:))