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

总结:

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

相关推荐
冰暮流星1 分钟前
javascript建立对象之构造函数
开发语言·javascript·ecmascript
keykey6.8 分钟前
PyTorch 入门实战:从张量到训练循环
开发语言·人工智能·深度学习·机器学习
csdn_aspnet11 分钟前
C# 使用linq给List某个属性值赋值
c#·list·linq
消失的旧时光-194312 分钟前
Kotlin 协程设计思想(七):为什么 Kotlin 要设计 SupervisorJob 和 supervisorScope?
android·开发语言·kotlin
Full Stack Developme15 分钟前
SpringMVC multipart 文件上传
java·开发语言
得一录15 分钟前
ModuleNotFoundError: No module named ‘llama_index.llms
开发语言·人工智能
j7~18 分钟前
【C++】类和对象(下)--详解之再探构造函数,友元,static成员,类型转换等
开发语言·c++·类型转换·友元·匿名对象·内部类·编译器优化
稷下元歌19 分钟前
7天学会plc加机器视觉关于运动控制部份,配套视频在bib
开发语言·c++·git·vscode·python·docker·pip
薇茗20 分钟前
【C++】 类与对象 基础篇
开发语言·c++·基础语法·类与对象
晚笙coding20 分钟前
从零讲透 LangChain 输出格式化:让模型真的“能用”
java·开发语言·langchain