巨野网站建设长沙网
news/
2025/9/24 1:08:08/
文章来源:
巨野网站建设,长沙网,怎么用域名进网站,编程软件python下载原来一直用SortList#xff0c;SortedDictionary来作为键值对存储的排序集合来用#xff0c;心中就默认是以key按ascall排序来存放的#xff0c;在之前的案例中也没有出现问题#xff0c;在最近一个demo中#xff0c;打破了原来的自以为是的认识#xff0c;因为在key中不… 原来一直用SortListSortedDictionary来作为键值对存储的排序集合来用心中就默认是以key按ascall排序来存放的在之前的案例中也没有出现问题在最近一个demo中打破了原来的自以为是的认识因为在key中不但有大写小还有特列符号。先看一下代码Console.WriteLine(-----------按ASCII排序-----------);
var chars new char[] { A, [, ], a };
foreach (var c in chars)
{Console.WriteLine(${c}{(int)c});
}
Console.WriteLine(-----------排序集合的排序-----------);
var list new SortedListstring, int();
list.Add(a, 97);
list.Add(A, 65);
list.Add([, 91);
list.Add(], 93);
foreach (var item in list)
{Console.WriteLine(${item.Key}{item.Value});
}结果如下显然SortList的key结果不是想要的按ascall排序的。那怎么才能达到按ascall呢那就自己动手做一个排序器吧其实就是实现IComparerstring接口中的Compare告诉两个string的比较规则那自然多个数据的排序就能按这种规则给出来。当然我给的按ascall的这个规则丝毫没有优美而言只是能表示出意思来。Console.WriteLine(-----------新排序集合的排序-----------);
var newList new SortedListstring, int(new ASCALLComparer());
newList.Add(a, 97);
newList.Add(A, 65);
newList.Add([, 91);
newList.Add(], 93);
foreach (var item in newList)
{Console.WriteLine(${item.Key}{item.Value});
}public class ASCALLComparer : IComparerstring
{public int Compare(string? x, string? y)
{if (x null || y null){throw new Exception(x or y is null);}if (x?.Length ! y?.Length){if (x?.Length y?.Length){for (var i 0; i x?.Length; i){if ((int)x[i] (int)y[i]){return 1;}else if ((int)x[i] (int)y[i]){return -1;}}return -1;}else{for (var i 0; i y?.Length; i){if ((int)x[i] (int)y[i]){return 1;}else if ((int)x[i] (int)y[i]){return -1;}}return 1;}}else{for (var i 0; i x?.Length; i){if ((int)x[i] (int)y[i]){return 1;}else if ((int)x[i] (int)y[i]){return -1;}}return 0;}}
}结果为那原来的排序规则是什么呢我枚举了一下ascall范围内部分可见字符下面是正序的排序方式序号符号ascall值89101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101_-,;:!?.()[]{}*/\#%^|~$0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ95454459583363463934404191931231256442479238353796944360616212412636484950515253545556579765986699671006810169102701037110472105731067410775108761097711078111791128011381114821158311684117851188611987120881218912290
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/914440.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!