I have a List like this:
var l = new List {\"bla 1.txt\",\"bla 2.txt\",\"bla 10.txt\",\"bla 3.txt\"};
If i call l.Sort(), the
The best approach is making use of IComparer
. This has already been done and can be found on code project.
Why not write something that will extract a number from a string, like this?
// Note: This could very well be a bad implementation. I'm not too great with Regex.
static int ExtractNumber(string text)
{
Match match = Regex.Match(text, @"(\d+)");
if (match == null)
{
return 0;
}
int value;
if (!int.TryParse(match.Value, out value))
{
return 0;
}
return value;
}
Then you could sort your list using:
list.Sort((x, y) => ExtractNumber(x).CompareTo(ExtractNumber(y)));
This strikes me as pretty inefficient, but it should be functional at least.
You could implement your own IComparer that maybe uses a regular expression on the input ("bla 1.txt"), converts that to an int, and peforms the comparison on that parsed value.