当前位置: 首页 > news >正文

【31】C#实战篇——获取路径下的文件名(不包含路径和扩展名),并分离出文件名`fileName` ,文件名编号`SN`,文件名前缀`WMT`

文章目录

  • 1 要求
  • 2 分析
  • 3 代码实现及验证

1 要求

写一个函数,获取路径下的文件名(不包含路径和扩展名),并分离出文件名fileName ,文件名编号SN,文件名前缀WMT

输入文件路径,解析出不带".“后缀的文件名fileName,然后fileName进一步拆分为SN+WMF 格式,其中WMT是MatchFilter数组中去掉”."后缀的部分,那么 fileName 减去末尾的WMF就得到SN。

例如

“E:\MTF\A1\StandardData\00000000000001Tele.csv”
拆分结果 fileName = 00000000000001Tele,SN = 00000000000001,WMT =Tele;

观察发现文件名SN部分,除了不光是数字编号,有时还有字母夹杂,这就增加了难度。

“E:\MTF\A1\StandardData\00ac0000FG0001AWide.csv”
拆分结果 fileName = 00ac0000FG0001AWide,SN = 00ac0000FG0001A,WMT =Wide;

2 分析

观察发现文件名SN部分,除了不光是数字编号,有时是是有字母加载。但文件名后末尾字母是可以指定的。这文件名末尾比如固定为 "Wide", "Tele", "Mid" 中三种情况,那么就可很多好的将SN和WMT 拆分了。

给定过滤匹配条件
string[] MatchFilter = { "Wide.csv", "Tele.csv", "Mid.csv" };”,或者 string[] MatchFilter = { "Wide.xlsx", "Tele.xlsx", "Mid.xlsx" };

写一个函数private void ExtractFileNameParts(string filePath, string[] MatchFilter,ref string fileName,ref string SN, ref string WMT);

3 代码实现及验证

private void ExtractFileNameParts(string filePath, string[] MatchFilter, ref string fileName, ref string SN, ref string WMT)
{// 获取文件名(不包含路径和扩展名)fileName = Path.GetFileNameWithoutExtension(filePath);// 遍历匹配过滤条件foreach (var filter in MatchFilter){// 去掉过滤条件中的扩展名部分string filterWithoutExtension = filter.Substring(0, filter.LastIndexOf('.'));// 检查文件名是否以当前过滤条件的前缀结尾(不区分大小写)if (fileName.EndsWith(filterWithoutExtension, StringComparison.OrdinalIgnoreCase)){// 确定WMT和SNWMT = filterWithoutExtension; // 文件类型部分SN = fileName.Substring(0, fileName.Length - filterWithoutExtension.Length); // 剩下的部分// 结束循环,已找到匹配条件break;}}
}

foreach (var filter in MatchFilter)重点解释

  • foreach 循环遍历 MatchFilter 数组中的每个过滤条件 filter。
  • filter.Substring(0, filter.LastIndexOf('.')) 从过滤条件中去掉扩展名部分,例如 Wide.csv 会变成 Wide。
  • if (fileName.EndsWith(filterWithoutExtension, StringComparison.OrdinalIgnoreCase)) 检查 fileName 是否以过滤条件的前缀结尾(不区分大小写)。
  • 如果匹配成功,将 filterWithoutExtension 赋给 WMT,并从 fileName 中去掉 filterWithoutExtension 部分得到 SN。

调用示例

// 示例调用
string filePath = @"E:\MTF\A1\StandardData\00000000000001Tele.csv";
string[] MatchFilter = { "Wide.csv", "Tele.csv", "Mid.csv" };
string fileName = "";
string SN = "";
string WMT = "";ExtractFileNameParts(filePath, MatchFilter, ref fileName, ref SN, ref WMT);Console.WriteLine("fileName: " + fileName);
Console.WriteLine("SN: " + SN);
Console.WriteLine("WMT: " + WMT);

输出结果应为:

fileName: 00000000000001Tele
SN: 00000000000001
WMT: Tele
http://www.dtcms.com/a/322472.html

相关文章:

  • 功能测试中常见的面试题-二
  • kettle插件-kettle MinIO插件,轻松解决文件上传到MinIO服务器
  • Nginx高性能web服务器
  • 如何衡量需求的紧急程度
  • 单片机输出高电平的两种方式
  • Spring Boot自定义Starter:从原理到实战全解析
  • TDengine IDMP 产品基本概念
  • Redis面试题及详细答案100道(01-15) --- 基础认知篇
  • 原生Vim操作大全
  • 分享一个基于Spark的眼科疾病临床数据可视化分析与应用研究Hadoop基于Vue和Echarts的眼科疾病统计数据交互式可视化系统的设计与实现
  • 麦当秀|MINDSHOW:在线AI PPT设计工具
  • linux 操作ppt
  • OceanBase架构设计
  • 7、docker |其余命令
  • 机器学习——08 特征降维
  • Android MVP架构详解:从理论到实践
  • (第三篇)spring cloud之Zookeeper注册中心
  • 观远BI 工具驱动零售消费行业精益增长的实践路径
  • 从反射到方法句柄:深入探索Java动态编程的终极解决方案
  • 【3D图像技术分析与实现】如何进行基于3DGS的城市道路重建?
  • 疯狂星期四文案网第34天运营日记
  • 计算机网络:如何将/22的CIDR地址块划分为4个子网
  • CosyVoice 语音合成模型性能优化实战:从 CPU 瓶颈到 GPU 加速的完整解决方案
  • Nginx 性能优化与动态内容处理
  • LeetCode 面试经典 150_数组/字符串_分发糖果(15_135_C++_困难)(贪心算法)
  • 关于开发语言的一些效率 从堆栈角度理解一部分c java go python
  • nginx的安装
  • QML 鼠标穿透
  • 目标检测数据集 - 人脸佩戴检测数据集下载「包含VOC、COCO、YOLO三种格式」
  • 105-基于Flask的珍爱网相亲数据可视化分析系统