在使用整数值对字符串列表进行排序时,我遇到了一个奇怪的问题.但是,某些值可能会以某些字符作为前缀.
例如
// B1, 5, 50, A10, 7, 72, B3, A1, A2
基本上有页码,应按如下方式排序:
// A1, A2, A10, B1, B3, 5, 7, 50, 72
但是,如果我使用默认字符串排序,那么这些将被排序为
// A1, A10, A2, B1, B3, 5, 50, 7, 72
C#中的任何解决方案?
这就是我为我们的应用程序解决它的方式,顺序就像在windows目录中一样:
public class NaturalSortComparer : IComparer<string>
{
    public int Compare(string x, string y)
    {
        return StrCmpLogicalW(x, y);
    }
    [DllImport("shlwapi.dll", CharSet = CharSet.Unicode, ExactSpelling = true)]
    public static extern int StrCmpLogicalW(string x, string y);
}
用法:
  NaturalSortComparer comparer = new NaturalSortComparer();
  return comparer.Compare(string1, string2);
但它可能不完全是你想要的:
// A1,A2,A10,B1,B3,5,7,50,72
这会给
// 5,7,50,72,A1,A2,A10,B1,B3
| 归档时间: | 
 | 
| 查看次数: | 7007 次 | 
| 最近记录: |