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());

总结:

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

相关推荐
CT随16 分钟前
Redis内存碎片详解
java·开发语言
anlog25 分钟前
C#在自定义事件里传递数据
开发语言·c#·自定义事件
奶香臭豆腐38 分钟前
C++ —— 模板类具体化
开发语言·c++·学习
晚夜微雨问海棠呀1 小时前
长沙景区数据分析项目实现
开发语言·python·信息可视化
graceyun1 小时前
C语言初阶习题【9】数9的个数
c语言·开发语言
波音彬要多做1 小时前
41 stack类与queue类
开发语言·数据结构·c++·学习·算法
Swift社区1 小时前
Excel 列名称转换问题 Swift 解答
开发语言·excel·swift
一道微光2 小时前
Mac的M2芯片运行lightgbm报错,其他python包可用,x86_x64架构运行
开发语言·python·macos
矛取矛求2 小时前
QT的前景与互联网岗位发展
开发语言·qt
Leventure_轩先生2 小时前
[WASAPI]从Qt MultipleMedia来看WASAPI
开发语言·qt