C#如何删除字符串中最后一个下划线及后续数字并保留原文件后缀
实现方案
你可以用C#内置的System.IO.Path类处理文件名后缀,避免手动拼接扩展名,核心逻辑是先拆分文件名和后缀,处理完文件名部分再拼回原后缀即可。
可直接运行的代码示例:
using System.IO; // 测试用文件名 string test = "studentName_123.pdf"; // 提取原文件扩展名(包含前缀点,例如.pdf/.docx/.png) string fileExt = Path.GetExtension(test); // 提取不带扩展名的纯文件名部分(例如studentName_123) string pureName = Path.GetFileNameWithoutExtension(test); // 查找纯文件名中最后一个下划线的位置 int lastUnderlinePos = pureName.LastIndexOf('_'); string finalName; // 兼容文件名不含下划线的边界场景 if (lastUnderlinePos >= 0) { finalName = pureName.Substring(0, lastUnderlinePos) + fileExt; } else { // 没有下划线时直接返回原文件名 finalName = test; }
上面的代码可以适配任意格式的文件后缀,不需要手动硬编码扩展名,同时兼容没有下划线的异常场景,避免Substring抛出索引越界错误。
内容的提问来源于stack exchange,提问作者user17071394
相关产品推荐
相关产品推荐

