Espressioni regolari ~ converti UNC in URL
Domanda
Sto cercando una soluzione regex per questo problema. Sto cercando di riformattare un UNC in un Uri
Problema:
La directory UNC deve essere riformattata in un Uri
\\ server \ d $ \ x \ y \ z \ AAA
deve apparire come:
Soluzione
Penso che in questo caso una sostituzione sia più facile da scrivere e comprendere rispetto a Regex. Dato:
string input = "\\\\server\\d$\\x\\y\\z\\AAA";
Puoi effettuare una doppia sostituzione:
string output = String.Format("http:{0}", input.Replace("\\d$\\x\\y", String.Empty).Replace("\\", "/"));
Altri suggerimenti
.Net framework supporta una classe chiamata System.Uri che può fai la conversione. È più semplice e gestisce i casi di fuga. Gestisce sia UNC, percorsi locali verso il formato Uri.
C #:
Console.WriteLine((new System.Uri("C:\Temp\Test.xml")).AbsoluteUri);
PowerShell:
(New-Object System.Uri 'C:\Temp\Test.xml').AbsoluteUri
Output:
file:///C:/Temp/Test.xml
^(\\\\\w+)\\.*(\\\w\\\w+)$
-
Prima corrispondenza:
\\server
-
Seconda partita:
\z\AAA
Concatenare una stringa e quindi anteporre http:
per ottenere http:\\server\z\AAA
. Sostituisci \
con /
.
Due operazioni:
-
per prima cosa, sostituisci
"(.*)d\$\\x\\y\\(.*)"
con"http:\1\2"
- questo cancellerà ild$\x\y\
e anteponehttp:
. -
Quindi sostituire
\\
con/
per terminare il lavoro.
Lavoro fatto!
Modifica: suppongo che in C #, " \1
" contiene la prima corrispondenza tra parentesi (lo fa in Perl). In caso contrario, dovrebbe essere chiaro cosa si intende sopra :)