Dertiminare/verificare se un path (stile Microsft Windows) è assoluto (in C#)

Sembra una stupidaggine, ma una funzione esplicita per fare questo non esiste, o meglio, non funziona proprio come si deve.

Il metodo del Microsoft .Net frame work in questione è Path.IsPathRooted. Sono riuscito a scovare questa funzione grazie a questo post. Ma più che il post in se stesso, la cosa più interessante è il primo commento che apapre nella pagina: la funzione Path.IsPathRooted considera il path “\temp\” come assoluto!

Diciamo che la cosa non va per nulla bene! Sebbene ci abbia perso un po’ di tempo, non sono riuscito a trovare una spiegazione al caso.

Date le circostanze, si è reso necessario sviluppare un’apposita funzione che svolga il lavoro: qui di seguito il codice.

public static bool isAbsolutePath(string sPath)
{
string sPattern = @"^[a-zA-Z]:\\";
Regex R = new Regex(sPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);

return R.IsMatch(sPath);
}

Per compilare il tutto, ricordarsi di includere il namespace System.Text.RegularExpressions.

Attenzione che la funzione non determina se un path è sintatticamente corretto (vedere post precedente): si limita a verificare “come inizia” per capire se è assoluto o meno. Il funzionamento è poi limitato solo a path locali alla macchina: non vengono gestiti path UNC.

Advanced regular expression

Davvero illuminante, concedetemi il termine, questo post di Karthik Viswanathan apparso in Smashing Magazine.

Sebbene siano ormai diversi anni che utilizzo le espressioni regolari, diverse cose di quest’articolo non le conoscevo.

Consiglio a tutti di leggerlo.

…ancora sulle espressioni regolari!

Segnalo questo interessante post che ho letto quest’oggi in Coding Horror. L’argomento in questione sono le espressioni regolari (argomento già da me trattato ;) ). La parte che più mi è piaciuta è la lista delle considerazioni finali, in particolare l’ultimo punto, il (4): “Regular expressions are not Parsers”.

Per chi comincia ad usare questo potente strumento e comincia a provarci gusto, è bene che tenga a mente quel punto!

Tool per il test delle “regular expression”

Comincio con un ammissione di colpa: non trovo più il post originale che mi ha permesso di scoprire il fantastico ed utilissimo tool di cui vi sto per parlare. Giuro (anche se so che la mamma non lo vuole ;) ) che non appena ritroverò la fonte originale pubblicherò un aggiornamento a questo post (non voglio assolutamente prendermi meriti che non mi competono :) ).

Torniamo a noi: è ormai dall’inizio dell’estate che mi ritrovo a “smanettare” con le espressioni regolari (prima delle ferie estive, quanto mi sono divertito con il mio collega Marco a programmare a “due mani”). Fino a pochi mesi fa non ne avevo mai testato su “pelle” la loro potenza: ora non saprei proprio come farne a meno. Avrò a che fare con loro almeno fino a Marzo del prossimo anno… e la cosa non mi dispiace affatto! ;)

Per quanti non sanno cosa sono le espressioni regolari consiglio di dare un’occhiata a questo link.

E’ mia abitudine testare le espressioni regolari che utilizzo nel software da me sviluppato tramite appositi tool: fino a pochi giorni fa ero convinto che i migliori a tale scopo fossero solo a pagamento. Poi, grazie a quel mitico post che non sono più capace di ritrovare, ho scoperto Expresso della Ultrapico. Che dire: provatelo… ma già dalla sua user interface capirete che lo strumento è fenomenale!

Expresso's screenshot