-1

如何删除目录中每个文件名中间的字符?

我的目录中充满了类似的文件:“Example01.1234312232.txt”、“Example02.2348234324.txt”等。

我想删除“.1234312232”,以便将其命名为“Example01.txt”,并对目录中的每个文件执行此操作。

每个文件名将始终包含相同数量的字符。

4

5 回答 5

7

你可以使用

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));
}
于 2013-02-22T18:26:04.790 回答
1

最简单的方法是使用正则表达式替换

\.\d+

对于空字符串""

var str = "Example01.1234312232.txt";
var res = Regex.Replace(str, @"\.\d+", "");
Console.WriteLine("'{0}'", res);

这是ideone 上演示的链接

于 2013-02-22T18:25:26.660 回答
0

您必须使用IO.DirectoryInfo类和GetFiles函数来获取文件列表。
循环所有文件并做一个子字符串来获得你想要的字符串。
然后调用My.Computer.Filesystem.RenameFile来重命名文件。

于 2013-02-22T18:29:19.913 回答
0

用这个:

filename.Replace(filename.Substring(9, 15), ".txt")

您可以对索引和长度进行硬编码,因为您说字符数具有相同的长度。

于 2013-02-22T18:29:58.603 回答
0

使用 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);    
            }
        }
    }
}
于 2013-02-22T18:38:26.687 回答