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:

http: // server / z / AAA

È stato utile?

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à il d$\x\y\ e antepone http:.

  • 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 :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top