如何用C#从文件夹路径列表中提取YYYY/MM/DD格式日期
提取路径中的日期部分实现方案
针对你给出的固定格式路径,这里提供几种实用的C#实现方式:
方法一:字符串分割拼接(最直接,适合格式固定场景)
你的路径格式固定为root/xxx/YYYY/MM/DD/filename.txt,按/分割后,日期部分对应数组索引2、3、4的三段内容,直接提取拼接即可:
List<string> lstPaths = new List<string>() { "root/input/2023/03/10/filename1.txt", "root/output/2023/03/14/filename2.txt", }; List<string> dateParts = new List<string>(); foreach (var path in lstPaths) { var segments = path.Split('/'); // 增加判断避免索引越界 if (segments.Length >= 5) { string date = $"{segments[2]}/{segments[3]}/{segments[4]}"; dateParts.Add(date); } } // 最终结果:["2023/03/10", "2023/03/14"]
方法二:正则表达式(适配格式略有变化的场景)
如果后续路径前缀可能变动,但日期部分始终是YYYY/MM/DD格式(4位数字/2位数字/2位数字),可以用正则匹配提取:
using System.Text.RegularExpressions; List<string> lstPaths = new List<string>() { "root/input/2023/03/10/filename1.txt", "root/output/2023/03/14/filename2.txt", }; List<string> dateParts = new List<string>(); // 匹配4位数字+斜杠+2位数字+斜杠+2位数字的模式 Regex dateRegex = new Regex(@"\d{4}/\d{2}/\d{2}"); foreach (var path in lstPaths) { Match match = dateRegex.Match(path); if (match.Success) { dateParts.Add(match.Value); } }
方法三:利用路径解析类(更规范的路径处理)
如果想通过系统路径API处理,可以先剥离文件名,再从目录路径中提取最后三段:
List<string> lstPaths = new List<string>() { "root/input/2023/03/10/filename1.txt", "root/output/2023/03/14/filename2.txt", }; List<string> dateParts = new List<string>(); foreach (var path in lstPaths) { // 获取文件所在目录:root/input/2023/03/10 string dirPath = Path.GetDirectoryName(path); var dirSegments = dirPath.Split('/'); if (dirSegments.Length >= 3) { // 从数组末尾往前取3段 string date = $"{dirSegments[^3]}/{dirSegments[^2]}/{dirSegments[^1]}"; dateParts.Add(date); } }
注:如果是Windows风格反斜杠路径,将Split('/')替换为Split('\\'),或用Path.DirectorySeparatorChar适配跨平台。
内容的提问来源于stack exchange,提问作者SuryaKavitha
相关产品推荐
相关产品推荐

