2

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

问题:

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

\\服务器\d$\x\y\z\AAA

需要看起来像:

http://server/z/AAA

4

4 回答 4

6

我认为在这种情况下,替换比正则表达式更容易编写和理解。鉴于:

string input = "\\\\server\\d$\\x\\y\\z\\AAA";

您可以进行双重替换:

string output = String.Format("http:{0}", input.Replace("\\d$\\x\\y", String.Empty).Replace("\\", "/"));
于 2009-06-27T18:33:31.157 回答
5

.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
于 2013-03-22T10:56:46.900 回答
1
^(\\\\\w+)\\.*(\\\w\\\w+)$
  • 第一场比赛:\\server

  • 第二场比赛:\z\AAA

连接到一个字符串,然后http:添加到 get http:\\server\z\AAA。替换\/

于 2009-06-27T18:07:01.700 回答
0

两个操作:

  • 首先,替换"(.*)d\$\\x\\y\\(.*)""http:\1\2"- 这将清除d$\x\y\,并在http:.

  • 然后替换\\/ 完成工作。

任务完成!

编辑:我假设在 C# 中,“ \1”包含第一个带括号的匹配项(在 Perl 中是这样)。如果没有,那么应该清楚上面的意思:)

于 2009-06-27T17:51:55.250 回答