Simplify AlphanumericComparator

This commit is contained in:
Bond_009
2023-01-24 12:47:59 +01:00
parent 6b006a576d
commit b7f2c8de5b
2 changed files with 9 additions and 39 deletions

View File

@@ -86,47 +86,12 @@ namespace Jellyfin.Extensions
{
return 1;
}
else if (span1Len >= 20) // Number is probably too big for a ulong
{
// Trim all the first digits that are the same
int i = 0;
while (i < span1Len && span1[i] == span2[i])
{
i++;
}
// If there are no more digits it's the same number
if (i == span1Len)
{
continue;
}
// Only need to compare the most significant digit
span1 = span1.Slice(i, 1);
span2 = span2.Slice(i, 1);
}
if (!ulong.TryParse(span1, out var num1)
|| !ulong.TryParse(span2, out var num2))
{
return 0;
}
else if (num1 < num2)
{
return -1;
}
else if (num1 > num2)
{
return 1;
}
}
else
int result = span1.CompareTo(span2, StringComparison.InvariantCulture);
if (result != 0)
{
int result = span1.CompareTo(span2, StringComparison.InvariantCulture);
if (result != 0)
{
return result;
}
return result;
}
} while (pos1 < len1 && pos2 < len2);