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
相关产品推荐
相关产品推荐

