使用RegEx删除文件名中的多个句点
我有一个应用程序,要求我“清理”“脏”文件名。
我想知道是否有人知道如何处理名称如下的文件:
1.0.1.21 – 机密… doc或Accounting.Files.doc
基本上,不能保证每个文件名的句点都在同一个地方。 我希望通过驱动器进行递归,在文件名本身中搜索句点(减去扩展名),删除句点然后将扩展名附加到其上。
有没有人知道更好的方法或者如何执行我希望做的事情? 注意,regEx是该项目的要求。
编辑:我没有看到1.0.1.21 – 机密… doc,而是希望看到:10121 – Confidential.doc
对于其他文件名,而不是Accounting.Files.doc,我想看看AccountingFiles.doc
你可以使用正则表达式:
string s = "1.0.1.21 -- Confidential...doc"; s = Regex.Replace(s, @".(?=.*.)", ""); Console.WriteLine(s);
结果:
10121 - Confidential.doc
正则表达式可以分解如下:
。 匹配一个文字点 (?=开始前瞻 。*任何字符 。 另一个点 )关闭先行
或者用简单的英语:删除每个后面至少有一个点的点。
使用内置方法处理文件名和扩展名会更清晰,所以如果你能以某种方式删除它必须是正则表达式的要求,我认为它会使解决方案更好。
这是一个不使用正则表达式的替代解决方案 – 也许它更具可读性:
string s = "1.0.1.21 -- Confidential...doc"; int extensionPoint = s.LastIndexOf("."); if (extensionPoint < 0) { extensionPoint = s.Length; } string nameWithoutDots = s.Substring(0, extensionPoint).Replace(".", ""); string extension = s.Substring(extensionPoint); Console.WriteLine(nameWithoutDots + extension);
我没有正则表达式*这样做。 (免责声明:我对正则表达式不太满意,所以这可能就是原因。)
考虑这个选项。
string RemovePeriodsFromFilename(string fullPath) { string dir = Path.GetDirectoryName(fullPath); string filename = Path.GetFileNameWithoutExtension(fullPath); string sanitized = filename.Replace(".", string.Empty); string ext = Path.GetExtension(fullPath); return Path.Combine(dir, sanitized + ext); }
* 哎呀 ,看起来像你说使用正则表达式是一个要求 。 没关系! (虽然我不得不问: 为什么 ?)
上述就是C#学习教程:使用RegEx删除文件名中的多个句点分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1012181.html