C# 数字字符串排序

例如:string[] strings = { "D10", "D2", "D1","D0", "D3", "D9" };

升序后:strings = { "D0", "D1", "D2","D3", "D9", "D10" };

方法一 使用linq语法糖OrderBy+int.Parse,如下:

var temp= strings.OrderBy(x => int.Parse(x[1..])).ToArray()

方法二:自定义比较器

cs 复制代码
    public class SemiNumericComparer : IComparer<string>
    {
        public int Compare(string x, string y)
        {
            // 提取字符串中的数字部分
            string numPartX = x.Substring(1);
            string numPartY = y.Substring(1);
 
            // 比较数字长度
            if (numPartX.Length > numPartY.Length) return 1;
            if (numPartX.Length < numPartY.Length) return -1;
 
            // 如果长度相同,直接比较字符串
            return string.Compare(numPartX, numPartY, StringComparison.Ordinal);
        }
    }

使用:Array.Sort(strings, new SemiNumericComparer());

总结:

以上两个方法都可以实现数字字符串排序,如果数据量大推荐方法二

相关推荐
张人玉几秒前
C#通讯(上位机)常用知识点
开发语言·c#·通讯·上位机开发
NGC_66112 分钟前
Java线程池七大核心参数介绍
java·开发语言
crescent_悦3 分钟前
C++:Highest Price in Supply Chain
开发语言·c++
float_com21 分钟前
【java进阶】------ Lambda表达式
java·开发语言
码云数智-大飞28 分钟前
Java接口与抽象类:从本质区别到架构选型
开发语言
小碗羊肉29 分钟前
【从零开始学Java | 第二十三篇】泛型(Generics)
java·开发语言·新手入门
m0_7505803038 分钟前
Java并发—Java线程
java·开发语言
我不是懒洋洋1 小时前
预处理详解
c语言·开发语言·c++·windows·microsoft·青少年编程·visual studio
计算机安禾1 小时前
【数据结构与算法】第14篇:队列(一):循环队列(顺序存储
c语言·开发语言·数据结构·c++·算法·visual studio
weixin_649555671 小时前
C语言程序设计第四版(何钦铭、颜晖)第十一章指针进阶之奇数值结点链表
c语言·开发语言·链表