rendered paste body class OrdinallySortableList : List<String>
{
/// <summary>
/// Helper class for sorting the strings ordinally
/// </summary>
private class OrdinalComparer : IComparer<string>
{
#region IComparer<string> Members
int IComparer<string>.Compare(string x, string y)
{
Regex numberRegEx = new Regex(@"([a-zA-Z])(\d+)_(\d+)", RegexOptions.Compiled);
Match xFileName = numberRegEx.Match(x);
Match yFileName = numberRegEx.Match(y);
string xLeadingChar = xFileName.Groups[1].Value;
string yLeadingChar = yFileName.Groups[1].Value;
int leadingCharCompareResult = String.Compare(xLeadingChar, yLeadingChar);
if (leadingCharCompareResult != 0)
return leadingCharCompareResult;
else
{
int xNumber = int.Parse(xFileName.Groups[2].Value + xFileName.Groups[3].Value);
int yNumber = int.Parse(yFileName.Groups[2].Value + yFileName.Groups[3].Value);
return (xNumber - yNumber);
}
}
#endregion
}
public void SortOrdinal()
{
base.Sort(new OrdinalComparer());
}
}