Zėŋōfōbìå

14 dicembre 2007

Natural Sort in C#

Filed under: C#, informatica — Tag: — Zeno @ 14:20

Natural Sort in sei righe, tratto da: http://www.nbdtech.com/Blog/

Il Natural Sort è l’ordinamento delle stringhe che ci appare naturale quando le stringhe contengono numeri.

Normalmente, infatti, ordinando secondo lo standard alfanumerico una lista che contenga stringhe nella forma : “1_elem”,”2_elem”, … ,”100_elem” avviene che il 100_elem viene anteposto al 2_elem, fornendo un’ordinamento diverso da quello che ci saremmo aspettati.

La soluzione più semplice che ho trovato è la seguente:

  1 [DllImport("Shlwapi.dll", CharSet = CharSet.Unicode)]
  2 private static extern int StrCmpLogicalW(string psz1, string psz2);

Una volta richiamato il collegamento alla funzione esterna si può passare al Array.Sort:

  3 Array.Sort(myStringArray, delegate(string l, string r)
  4 {
  5       return StrCmpLogicalW(l, r);
  6 });
Annunci

Crea un sito o un blog gratuitamente presso WordPress.com.