You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何在C#中按文件名前缀数字对文件进行分组

按文件名前缀数字分组的解决方案

你可以利用LINQ的GroupBy方法结合字符串处理实现分组,具体步骤如下:

完整代码示例

先确保引用必要的命名空间:

using System;
using System.IO;
using System.Linq;

然后执行分组逻辑:

// 获取目标目录下所有txt文件的完整路径
string[] filePaths = Directory.GetFiles(@"C:\Maps\", "*.txt", SearchOption.TopDirectoryOnly);

// 按文件名开头的数字分组
var groupedFiles = filePaths.GroupBy(path => 
{
    // 从完整路径中提取纯文件名
    string fileName = Path.GetFileName(path);
    // 定位下划线分隔符的位置
    int underscorePos = fileName.IndexOf('_');
    
    // 尝试截取前缀并转换为数字,作为分组键
    if (underscorePos > 0 && int.TryParse(fileName.Substring(0, underscorePos), out int groupNumber))
    {
        return groupNumber;
    }
    
    // 对不符合格式的文件返回标记值,后续可过滤
    return -1;
})
// 过滤掉格式不符合的文件分组
.Where(g => g.Key != -1)
// 按分组数字升序排列
.OrderBy(g => g.Key);

遍历分组结果

如果需要输出或处理分组后的文件,可按如下方式遍历:

foreach (var group in groupedFiles)
{
    Console.WriteLine($"--- 分组 {group.Key} ---");
    foreach (var filePath in group)
    {
        Console.WriteLine(Path.GetFileName(filePath));
    }
}

逻辑说明

  • 提取文件名:用Path.GetFileName剥离完整路径,只保留文件名部分,避免路径字符干扰分组逻辑。
  • 提取分组键:通过下划线定位前缀数字范围,用int.TryParse确保前缀为有效数字,避免格式错误的文件引发异常。
  • 过滤与排序:过滤掉格式不符的分组,再按分组数字排序,保证分组顺序符合预期。

内容的提问来源于stack exchange,提问作者Sarper Sözen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 03:47:19