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

总结:

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

相关推荐
chao18984419 小时前
基于 SPEA2 的多目标优化算法 MATLAB 实现
开发语言·算法·matlab
赏金术士20 小时前
Kotlin 习题集 · 高级篇
android·开发语言·kotlin
楼兰公子21 小时前
buildroot 在编译rust时裁剪平台类型数量的方法
开发语言·后端·rust
吴声子夜歌21 小时前
Go——并发编程
开发语言·后端·golang
ooseabiscuit21 小时前
Laravel4.x:现代PHP框架的奠基之作
java·开发语言·php
c1s2d3n4cs1 天前
Qt模仿nlohmann::json进行序列化和反序列化
开发语言·qt·json
没什么本事1 天前
关于C# panel 添加lable问题 -- 明确X和Y 位置错误
android·java·c#
AiTop1001 天前
Claude Code 推出 Agent View:命令行编程正式进入“多线程并发“时代
开发语言·人工智能·ai·aigc
jf加菲猫1 天前
第21章 Qt WebEngine
开发语言·c++·qt·ui
码农-阿杰1 天前
深入理解 synchronized 底层实现:从 HotSpot C++ 源码看对象锁与 Monitor 机制
开发语言·c++·