当前位置: 首页 > 编程语言 > C#

如何用字母数字排序数字分享

时间:2023-04-10 15:14:15 C#

C#学习教程:如何按字母数字对数字排序数字而不是前缀和后缀字母http://dotnetperls.com/alphanumeric-sorting上的优秀、优化的开源解决方案没有任何内置功能来执行此操作,但您可以通过首先提取数字和排序来完成以此为基础来实现。例如:classVehicleNumberComparer:IComparer{publicintCompare(stringlhs,stringrhs){varnumExtract=newRegex("[0-9]+");intlhsNumber=int.Parse(numExtract.Match(lhs).Value);intrhsNumber=int.Parse(numExtract.Match(rhs).Value);返回lhsNumber.CompareTo(rhsNumber);这是未经测试的(可能甚至不会在不修改的情况下编译),没有错误检查,可能不是世界上最快的方法,但应该给你一个想法。如果可能有没有数字的车牌,那么您应该检查一下。staticintSortPlate(stringplate){intplateNumber;正则表达式regex=newRegex(@"d+");Int32.TryParse(regex.Match(plate).Value,outplateNumber);返回车牌号;}staticvoidMain(string[]args){IEnumerabledata=newList(){"SHC111U","SHB22x","SHA5555G","HOTSTUFF"};varsortedList=fromzindataorderbySortPlate(z)selectz;foreach(stringplateinsortedList){Console.WriteLine(plate);如果在世界末日发生之前绝对不可能有一个没有数字的盘子,那么这个缩短的形式将起作用:staticvoidMain(string[]args){IEnumerabledata=newList(){"SHC111U","SHB22x","SHA5555G"};正则表达式regex=newRegex(@"d+");varsortedList=fromzindataorderbyInt32.Parse(regex.Match(z).Value)selectz;foreach(stringplateinsortedList){Console.WriteLine(plate);这样做的一个好方法是做这样的事情来编写正则表达式以匹配名称的数字部分,它被放入整数值对的集合中,第一个是从字符串中提取的数字,然后第二个是原始列表中数字的索引。然后对第二个列表进行排序,然后使用集合中的第二个数字对第一个列表重新排序。使用接受IComparer对象的Sort方法并将您的车辆编号集合传递给它。您需要定义一个实现IComparer的自定义类。在该类的compare方法中,可以编写代码比较两个车号。您应该使用正则表达式来提取车辆编号的数字部分。以上就是C#学习教程:如何使用字母数字排序数字的全部内容分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处: