C# C语言中的自定义排序列表框项#
我有一些自定义文件名,需要根据文件名本身的信息进行排序 我知道必须有一种比我用SortDescriptions想出的更简单的方法(一个for循环,它通过并手动拆分字符串来识别各种文件名信息),但我无法理解它们 文件名格式为: OurApp\u versionNum\u DEBUG\u build\u number.exe e、 g 记事本\u 1.0\u调试\u构建\u 1.exe 我想对列表框顶部具有最高版本号的项目进行排序,例如 记事本\u 1.0\u调试\u构建\ustrong>10.exe 记事本1.0调试构建7.exe 记事本\u 1.0\u调试\u构建\ustrong>1.exe 我知道一定有比我想到的更简单的方法。感谢您的帮助 我正在使用.NET4.0 多谢各位C# C语言中的自定义排序列表框项#,c#,c#-4.0,C#,C# 4.0,我有一些自定义文件名,需要根据文件名本身的信息进行排序 我知道必须有一种比我用SortDescriptions想出的更简单的方法(一个for循环,它通过并手动拆分字符串来识别各种文件名信息),但我无法理解它们 文件名格式为: OurApp\u versionNum\u DEBUG\u build\u number.exe e、 g 记事本\u 1.0\u调试\u构建\u 1.exe 我想对列表框顶部具有最高版本号的项目进行排序,例如 记事本\u 1.0\u调试\u构建\ustrong>10.ex
在将项目添加到列表框之前,对项目进行排序。一个简单的正则表达式调用可以提取数字,例如:
(\\d+).exe
,如果您知道文件名就是这样的话。我想您正在寻找一种定制的自然排序算法。有关示例实现,请参见(本机C#
one,作者J.D.)
定义自
自然排序顺序是按字母顺序对字符串排序,但多位数数字是按单个字符排序的
未经修改,它会将您的列表输出为:
- 记事本\u 1.0\u调试\u构建\u 1.exe
- 记事本\u 1.0\u调试\u构建\u 7.exe
- 记事本\u 1.0\u调试\u构建\u 10.exe
public static int CompareNaturalReverse(string strA, string strB) {
return -CompareNatural(strA, strB);
}
否则,如果您想保持字母顺序,只想颠倒数字顺序(因为前缀不同),就必须更改排序实现。我最后做了类似的事情。为了我的目的,请直截了当。