如何为目录中的每个文件删除文件名中的中间字符
本文关键字:删除 文件 文件名 中间 字符 | 更新日期: 2023-09-27 18:00:31
如何删除目录中每个文件名中间的字符?
我的目录中充满了文件,如:"Example01.123431232.txt"、"Example02.2348234324.txt"等。
我想删除".124312232",使其命名为"Example01.txt",并对目录中的每个文件执行此操作。
每个文件名中的字符数始终相同。
您可以使用
string fileNameOnly = Path.GetFileNameWithoutExtension(path);
string newFileName = string.Format("{0}{1}",
fileNameOnly.Split('.')[0],
Path.GetExtension(path));
演示
值得一提的是,您的目录重命名问题的完整代码:
foreach (string file in Directory.GetFiles(folder))
{
string fileNameOnly = Path.GetFileNameWithoutExtension(file);
string newFileName = string.Format("{0}{1}",
fileNameOnly.Split('.')[0],
Path.GetExtension(file));
File.Move(file, Path.Combine(folder, newFileName));
}
最简单的方法是使用正则表达式替换
'.'d+
对于空字符串""
:
var str = "Example01.1234312232.txt";
var res = Regex.Replace(str, @"'.'d+", "");
Console.WriteLine("'{0}'", res);
这里有一个ideone演示的链接。
您必须使用IO.DirectoryInfo类和GetFiles函数来获取文件列表
循环所有文件并执行子字符串以获得所需的字符串
然后调用My.Computer.Filesystem.RenameFile重命名文件。
使用此:
filename.Replace(filename.Substring(9, 15), ".txt")
您可以硬编码索引和长度,因为您说过字符数具有相同的长度。
使用Directory.EnumerateFiles枚举文件,Regex.Replace获取新名称,File.Move重命名文件:
using System.IO;
using System.Text.RegularExpressions;
class SampleSolution
{
public static void Main()
{
var path = @"C:'YourDirectory";
foreach (string fileName in Directory.EnumerateFiles(path))
{
string changedName = Regex.Replace(fileName, @"'.'d+", string.Empty);
if (fileName != changedName)
{
File.Move(fileName, changedName);
}
}
}
}