日期:2014-05-18  浏览次数:20982 次

前面一个单词后面是该词对应数字,按照数字大小如何排序
AA:12;BB:18;CC:111;DD:23;EE:45;FFF:2;

排序的结果应该为:CC:111;EE:45;DD:23;BB:18;AA:12;FFF:2;

问用C#如何输出该结果?

------解决方案--------------------
1.你可以用正則表態式也許可以找到規則。
2.將你的字串用.Split拆成字串陣列,之後去比較其大小,產生新的字串陣列然後用一個迴圈將字串陣列加起來就行了。
------解决方案--------------------
C# code
string str="AA:12;BB:18;CC:111;DD:23;EE:45;FFF:2;";
            Console.Write(string.Join(";", str.Split(new char[]{';'},StringSplitOptions.RemoveEmptyEntries).OrderByDescending(x => int.Parse(x.Split(':')[1])).ToList()));
            Console.Read();

------解决方案--------------------
探讨

不行啊!运行出错!

------解决方案--------------------
先按照“;”拆分,然后每个拆分后的字符串再按照“:”拆分啊,按照数字排就是了
------解决方案--------------------
C# code
string str = "AA:12;BB:18;CC:111;DD:23;EE:45;FFF:2";
string[] arr = str.Split(';');
Array.Sort(arr, (v1, v2) => int.Parse(v1.Split(':')[1]).CompareTo(int.Parse(v2.Split(':')[1])));
str = string.Join(";", arr);