Back to list
Views:   11.7K
Replies:  1

Sorting Numeric Text

I have found this useful for when I need to sort names that begin with numbers.

var myList = new List<string>();
myList.Add("10 Kings");
myList.Add("1 Queens");
myList.Add("524 3rd");
myList = myList.OrderBy(x=>x.NumAlpha()).Tolist();

public static string NumAlpha(this string s) 
   if (s.IsNull()) return string.Empty;
   string s2 = Regex.Replace(s.ToString(), @"^[0-9]+", ""); 
   if (s2.Length != s.Length) 
       s = s.Substring(0, s.Length - s2.Length).PadLeft(10, "0"[0]) + s2; 
   return s; 

Aaron Burton, Feb 06, 2010
Reply 1
public static readonly Regex regex = new Regex(@"^(?<numbers>\d+)(?<residue>.+)$");
public static string NumAlpha(this string s)   
    if (s == null) return null;
    var match = regex.Match(s);   
    if (match.Success)   
        return string.Format("{0,10}{1}", match.Groups["numbers"], match.Groups["residue"]);   
    return s;   

Pav Lik, Feb 22, 2010
Stay Inspired!
Join other developers and designers who have already signed up for our mailing list.
Terms     Privacy     Cookies       Do Not Sell       Licensing      
Made with    in Austin, Texas.  - vsn 44.0.0
© Data & Object Factory, LLC.