C# 替换包含“.”的文件名带有“”但删除文件扩展名

Posted

技术标签:

【中文标题】C# 替换包含“.”的文件名带有“”但删除文件扩展名【英文标题】:C# Replacing filenames containing "." with " " but removing the file extension 【发布时间】:2017-07-16 00:47:13 【问题描述】:

我正在重命名包含“。”的文件夹中的文件。带有“”。 预期结果...之前:“I.am.testing.txt”,之后:“I am testing.txt” 实际结果...之前:“I.am.testing.txt”,之后:“我正在测试txt”

问题是它还删除了“。”对于显然是一个问题的文件扩展名..

string folderPath = new DirectoryInfo(textBoxDir.Text).FullName;
DirectoryInfo d = new DirectoryInfo(folderPath);
FileInfo[] filesDot = d.GetFiles("*.*");

foreach (FileInfo fi in filesDot)

    File.Move(fi.FullName, Path.Combine(fi.Directory.ToString(), fi.Name.Replace(".", " ")));

【问题讨论】:

【参考方案1】:

您可以只使用Path.GetFileNameWithoutExtension 仅获取文件名,然后将原始扩展名附加到末尾。

File.Move(fi.FullName, Path.Combine(fi.Directory.ToString(), Path.GetFileNameWithoutExtension(fi.Name).Replace(".", " ") + fi.Extension));

【讨论】:

如果你这样做,你还需要添加 + Path.GetFileExtension(fi.Name) 作为 Path.Combine 的第二个参数的一部分 如果您查看我几分钟前的编辑,您会发现我添加了该内容。发帖后才知道。谢谢。 对不起,我在手机上的应用,还没有刷新。 没问题@iCode 我做了同样的事情比我想提到的要多。 @Conor 完美,很高兴我们能为您解决问题!

以上是关于C# 替换包含“.”的文件名带有“”但删除文件扩展名的主要内容,如果未能解决你的问题,请参考以下文章

替换 RTF 文件中的字符串时出现问题 - C#

如何在 C# Unity 中加载带有扩展名(.json)的资产文件夹中的任何文件

如何从文件中删除所有变音符号?

用其他东西替换或删除新行,但只能在 CSV 文件上使用 PHP 的单引号或双引号之间

如何使用正则表达式匹配从 xml 文件中搜索和替换包含占位符标记的文本。 VB.net 或 C#

删除带有.htaccess和MultiViews的文件扩展名