当前位置:首页 > 开发 > C# > 正文内容

在 C# 中实现类似于 Windows 资源管理器的“名称”排序方式

C#5个月前 (12-05)

要在 C# 中实现类似于 Windows 资源管理器的“名称”排序方式,你需要考虑以下几点:

1. 不区分大小写:确保排序时忽略字符的大小写。

2. 自然排序(数值排序):正确处理文件名中的数字,使得 file1 排在 file10 之前。

3. 特殊字符和空格:处理文件名中的特殊字符和空格,但它们不应影响主要排序逻辑。

4. 扩展名:如果文件名部分相同,则根据扩展名进行排序。

为了实现这一点,C# 提供了 StringComparer.OrdinalIgnoreCase 来忽略大小写,并且你可以使用正则表达式或自定义比较器来处理文件名中的数字。此外,.NET 还提供了一个内置的 NaturalStringComparer 类,它可以帮助你实现自然排序。

方法1: 使用 StringComparer.OrdinalIgnoreCase 和 OrderBy

如果你只需要简单的字典顺序排序(不区分大小写),可以使用 StringComparer.OrdinalIgnoreCase:

using System;
using System.Linq;

class Program
{
    static void Main()
    {
        string[] files = new string[]
        {
            "file1.txt",
            "file10.txt",
            "file2.txt",
            "File3.txt",
            "file_1.txt",
            "file-1.txt"
        };

        // 按照文件名进行排序,忽略大小写
        var sortedFiles = files.OrderBy(f => f, StringComparer.OrdinalIgnoreCase).ToArray();

        // 打印排序后的文件名
        foreach (var file in sortedFiles)
        {
            Console.WriteLine(file);
        }
    }
}


转载请注明出处。

本文链接:http://www.pythonopen.com/?id=1606

相关文章

C# 判断鼠标按键

private void button1_MouseDown(object&nb...

C# string与StringBuilder速度测试

测试代码    Stopwatch time1 =...

C# 可空参数

using System; using System.Runtime.Inte...

C# double转为string并保留两位小数

在 C# 中,可以使用多种方式将 double 类型的数据转换为 string 类型并保留两位小数,...

C# Winform 拖放文件

private void Form1_Load(object send...