Array.Sort可以实现便捷的字典排序,但如果完全相信他,那么就容易产生些异常!太顺利了,往往是前面有坑等你。

比如:微信接口,好多地方需要签名认证,签名的时候需要用的字典排序,如果只用Array.Sort()会出现签名异常的情况,而且是偶尔出现。

问题就在于他的排序默认没有区分大小写,这跟微信的签名将不匹配,所以还是需要自己实现比较的方法

public class DictionarySort : System.Collections.IComparer
{
public int Compare(object oLeft, object oRight)
{
string sLeft = oLeft as string;
string sRight = oRight as string;
int iLeftLength = sLeft.Length;
int iRightLength = sRight.Length;
int index = ;
while (index < iLeftLength && index < iRightLength)
{
if (sLeft[index] < sRight[index])
return -;
else if (sLeft[index] > sRight[index])
return ;
else
index++;
}
return iLeftLength - iRightLength; }
} string[] arr = { "E0o2-at6NcC2OsJiQTlwlCYXETNlXymc-tIaxXdRNahmhLtvORQGZfIvXWmiTberoB4ARrwHR-XxB47vfIKY_Q",
"",
"p8hR6s3Eljz2TLLJab7rmJaOXHvc",
"a9233845d1c74e8194e6979a4210c804" }; Array.Sort(arr);
string tmpStr = string.Join("", arr);
this.textBox1.Text = tmpStr;
//1449221063a9233845d1c74e8194e6979a4210c804E0o2-at6NcC2OsJiQTlwlCYXETNlXymc-tIaxXdRNahmhLtvORQGZfIvXWmiTberoB4ARrwHR-XxB47vfIKY_Qp8hR6s3Eljz2TLLJab7rmJaOXHvc Array.Sort(arr, new DictionarySort());
this.textBox2.Text = string.Join("", arr);
//1449221063E0o2-at6NcC2OsJiQTlwlCYXETNlXymc-tIaxXdRNahmhLtvORQGZfIvXWmiTberoB4ARrwHR-XxB47vfIKY_Qa9233845d1c74e8194e6979a4210c804p8hR6s3Eljz2TLLJab7rmJaOXHvc

C# 字典排序Array.Sort的更多相关文章

  1. python 字典排序 关于sort()、reversed()、sorted()

    一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...

  2. <转>python字典排序 关于sort()、reversed()、sorted()

    一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...

  3. [ActionScript 3.0] 对数组中的元素进行排序Array.sort()的方法

    对数组中的元素进行排序. 此方法按 Unicode 值排序. (ASCII 是 Unicode 的一个子集.) 默认情况下,Array.sort()按以下方式进行排序: 1. 排序区分大小写(Z优先于 ...

  4. 深入Python(1): 字典排序 关于sort()、reversed()、sorted()

    http://www.cnblogs.com/BeginMan/p/3193081.html 一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠 ...

  5. .NET 排序 Array.Sort<T> 实现分析

    System.Array.Sort<T> 是.NET内置的排序方法, 灵活且高效, 大家都学过一些排序算法,比如冒泡排序,插入排序,堆排序等,不过你知道这个方法背后使用了什么排序算法吗? ...

  6. 自带排序 Array.sort()

    public static void main(String[] args) { int[] aa = {1, 5, 9, 7, 3, 1, 6, 3, 47}; Arrays.sort(aa); p ...

  7. 排序算法| Array.sort()算法规则

    1.js的Array.sort()是使用什么算法排序: 1.火狐中是“归并排序” 2.V8引擎是 “插入排序和快速排序结合”.数组长度不超过10时,使用插入排序.长度超过10使用快速排序.在数组较短时 ...

  8. 简单的Array.sort 排序方法

    [排序]sort类    Arrays.sort升序排序 import java.util.Arrays;//导入Arrays类public class menu{ public static voi ...

  9. 排序算法--希尔排序(Shell Sort)_C#程序实现

    排序算法--希尔排序(Shell Sort)_C#程序实现 排序(Sort)是计算机程序设计中的一种重要操作,也是日常生活中经常遇到的问题.例如,字典中的单词是以字母的顺序排列,否则,使用起来非常困难 ...

随机推荐

  1. python 静态方法,类方法 ,类的继承

    转自:  http://cowboy.1988.blog.163.com/blog/static/75105798201091141521583/ 1.关于定义类的一些奇特之处  今天在Python中 ...

  2. Titanium系列--我常用的Titanium的快捷键(持续更新中。。)

    Titanium快捷键: (注:Titanium属于eclipse系列的IDE) ctrl + shift + r 快速打开 ctrl + shift + e / ctrl + e 打开之前的文件 c ...

  3. SR触发器和JK触发器

    SR触发器(电平触发器) 基本RS触发器的逻辑方程为:Q(n+1)=一S+RQ(n); 约束方程:R+S=1; 根据上述两个式子得到它的四种输入与输出的关系: 1.当R端有效(0),S端无效时(1), ...

  4. 制作SMD Package及SMD焊盘制作

    1.设置公英制. 2.设置栅格点.在Etch里设置0.1MM. 3.封装包括以下内容:REF标识, Place bound层包括高度, silkscreen 层, 1pin标识及pin序, 中心坐标, ...

  5. Incompatible operand types DeptE and int 异常处理

    Incompatible operand types DeptE and int 1.java不会运算到==的值,把==改为equals 2.java不会运算到eequals的值 把equals的改为 ...

  6. Linux启动ftp服务器530 Permission denied解决方法(已试,行)

    Linux启动ftp服务器530 Permission denied解决方法重新在虚拟机下安装了linux.现在我想启动linux自带的ftp服务器:#service  vsftpd  start . ...

  7. PHP表单处理

    <?php if(isset($_POST['submit'])) { foreach ($_POST["languages"] as $item) { echo " ...

  8. solr与.net系列课程(九)solr5.1的配置

    solr与.net系列课程(九)solr5.1的配置 最近一些园友来咨询solr5.1的配置方式,然后我就去官网下载了个最新版本的solr,发现solr5.0以后solr的下载包里的内容发生的变化,移 ...

  9. Url转Link的C#正则表达式

    网上关于Url转链接(href)的正则表达式一搜一大堆,但真正好用的没几个. 后来在Matthew O'Riordan的Blog上发现一个很好用的正则表达式,是用Javascript写的,代码如下: ...

  10. AutoMapper中的Map和DynamicMap——高手注重细节,思考和总结

    近日在做项目的时候,遇到了个怪问题,关于AutoMapper的细节问题,也是不为一般人所关注的. 本人研究AutoMapper也没有多长时间,而且研究的过程中也写了关于AutoMapper的系列基础教 ...