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

C#中提取路径最后两个元素(基目录+文件名)的简便方法

在C#中提取路径的最后两个元素(目录+文件名)

完全不需要用复杂的正则表达式,直接用.NET内置的System.IO.Path类就能轻松实现,还能自动适配Windows和Linux的路径分隔符,避免手动字符串处理的各种坑。

核心思路分三步:

  • 获取文件所在的父目录路径
  • 提取该父目录的最后一级名称
  • 将这个目录名与文件名用正确的分隔符拼接起来

实现代码

using System.IO;

// 示例输入路径
string string1 = @"C:\dir\example\1\test.txt";
string string2 = @"C:\dir\example\2\anotherdir\example\file.ext";
string string3 = "/mnt/media/hdd/test/1/2/3/4/dir/file";

// 封装成可复用的方法
string ExtractLastTwoPathParts(string path)
{
    var parentDirectory = Path.GetDirectoryName(path);
    // 处理极端情况:路径仅包含文件名(无父目录)
    if (string.IsNullOrWhiteSpace(parentDirectory))
    {
        return Path.GetFileName(path);
    }
    
    var lastDirectoryName = Path.GetFileName(parentDirectory);
    var fileName = Path.GetFileName(path);
    
    // Path.Combine会自动使用对应系统的路径分隔符
    return Path.Combine(lastDirectoryName, fileName);
}

// 调用方法并输出结果
string string1cut = ExtractLastTwoPathParts(string1);
string string2cut = ExtractLastTwoPathParts(string2);
string string3cut = ExtractLastTwoPathParts(string3);

Console.WriteLine($"string1cut = {string1cut}");
Console.WriteLine($"string2cut = {string2cut}");
Console.WriteLine($"string3cut = {string3cut}");

输出结果

string1cut = 1\test.txt
string2cut = example\file.ext
string3cut = dir/file

这个方法的优势在于:

  • 无需手动处理路径分隔符(\或/),Path类会自动识别并处理
  • 能兼容各种合法路径格式,包括相对路径、网络共享路径等
  • 代码可读性高,维护成本低

内容的提问来源于stack exchange,提问作者Priora

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 23:05:30