自然排序法運算子(F1,F2,F10,F11,F20...)
//自然排序法運算子
public class AlphaNumberSort : IComparer<string>
{
public int Compare(string x , string y)
{
StringComparer sc = StringComparer.CurrentCultureIgnoreCase;
if (string.IsNullOrEmpty(x) || string.IsNullOrEmpty(y))
{
return x.CompareTo(y);
}
string numberX = FindTrailingNumber(x);
string numberY = FindTrailingNumber(y);
if (numberX != string.Empty && numberY != string.Empty)
{
//先比字母部份
int stringCompareResult = sc.Compare(
x.Remove(x.Length - numberX.Length) ,
y.Remove(y.Length - numberY.Length) );
if (stringCompareResult != 0)
{
return stringCompareResult;
}
//若字母相同,再比數值部份
double dX = Convert.ToDouble(numberX);
double dY = Convert.ToDouble(numberY);
return dX.CompareTo(dY);
}
else
{
return sc.Compare( x , y );
}
}
留言
張貼留言