blob: c70dab2c6ec7ef888d98f831b976e793e0ac5a24 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
namespace Enmarcha.Backend.Helpers;
public class SortingHelper
{
public static int SortRouteShortNames(string? a, string? b)
{
if (a == null && b == null) return 0;
if (a == null) return 1;
if (b == null) return -1;
var aDigits = new string(a.Where(char.IsDigit).ToArray());
var bDigits = new string(b.Where(char.IsDigit).ToArray());
bool aHasDigits = int.TryParse(aDigits, out int aNumber);
bool bHasDigits = int.TryParse(bDigits, out int bNumber);
if (aHasDigits != bHasDigits)
{
// Non-numeric routes (like "A" or "-") go to the beginning
return aHasDigits ? 1 : -1;
}
if (aHasDigits && bHasDigits)
{
if (aNumber != bNumber)
{
return aNumber.CompareTo(bNumber);
}
}
// If both are non-numeric, or numeric parts are equal, use alphabetical
return string.Compare(a, b, StringComparison.OrdinalIgnoreCase);
}
}
|