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

总结:

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

相关推荐
꧁执笔小白꧂15 小时前
C#+VisionMaster 学习笔记(目录)-目录
c#·visionmaster
sali-tec15 小时前
C# 基于halcon的视觉工作流-章68 深度学习-对象检测
开发语言·算法·计算机视觉·重构·c#
生骨大头菜16 小时前
使用python实现相似图片搜索功能,并接入springcloud
开发语言·python·spring cloud·微服务
绝不收费—免费看不了了联系我16 小时前
Fastapi的单进程响应问题 和 解决方法
开发语言·后端·python·fastapi
消失的旧时光-194317 小时前
深入理解 Java 线程池(二):ThreadPoolExecutor 执行流程 + 运行状态 + ctl 原理全解析
java·开发语言
咖啡续命又一天17 小时前
Trae CN IDE 中 Python 开发的具体流程和配置总结
开发语言·ide·python·ai编程
4311媒体网17 小时前
帝国cms调用文章内容 二开基本操作
java·开发语言·php
GSDjisidi17 小时前
东京IT软件会社-(株)GSD|多种技术栈募集,高度人才+20分
开发语言·面试·职场和发展
程序员zgh18 小时前
Linux系统常用命令集合
linux·运维·服务器·c语言·开发语言·c++
獭.獭.18 小时前
C++ -- STL【unordered_set与unordered_map的实现】
开发语言·c++·unordered_map·unordered_set