Регулярные выражения ~ конвертировать UNC в URL - PullRequest
2 голосов
/ 27 июня 2009

Я ищу хорошее решение этой проблемы. Я хочу переформатировать UNC в Uri

Проблема:

Каталог UNC необходимо переформатировать в Uri

\\ сервер \ d $ \ х \ у \ г \ AAA

должен выглядеть так:

http://server/z/AAA

Ответы [ 4 ]

6 голосов
/ 27 июня 2009

Я думаю, что заменить легче написать и понять, чем Regex в этом случае. Дано:

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

Вы можете сделать двойную замену:

string output = String.Format("http:{0}", input.Replace("\\d$\\x\\y", String.Empty).Replace("\\", "/"));
5 голосов
/ 22 марта 2013

.Net Framework поддерживает класс 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
1 голос
/ 27 июня 2009
^(\\\\\w+)\\.*(\\\w\\\w+)$
  • Первый матч: \\server

  • Второй матч: \z\AAA

Объединить в строку, а затем добавить http:, чтобы получить http:\\server\z\AAA. Заменить \ на /.

0 голосов
/ 27 июня 2009

Две операции:

  • сначала замените "(.*)d\$\\x\\y\\(.*)" на "http:\1\2" - это очистит d$\x\y\ и добавит http:.

  • Затем замените \\ на /, чтобы завершить работу.

Работа выполнена!

Редактировать: я предполагаю, что в C # "\1" содержит первое совпадение в скобках (это происходит в Perl). Если это не так, то должно быть ясно, что имеется в виду:)

...