从文件名中提取基本名称和扩展名 - file.txt.1

时间:2015-04-15 05:37:19

标签: c#

我们这里的一个工具维护文件的格式如 - file.txt.1。 最后1是始终的数值,并且在每个文件保存时增加,因此文件系统有多个文件。

现在在另一个C#应用程序中,我想处理这些文件名。在这里我想分割basename和扩展名。

我使用了Path.GetFilenameWithoutExtension()Path.GetExtension()。在这种情况下,它们将分别返回file.txt和.1。

这迫使我运行另一轮调用来获取没有扩展名和文件扩展名的文件名。

有基本名称和扩展名的简单/智能方法吗?

1 个答案:

答案 0 :(得分:1)

我认为没有比你的第一个想法更简单的方法。 尽管如此,使用正则表达式的优点是,您可以更好地控制使用正确的语法过滤掉文件。我刚写了一个小样本:

...
using System.IO;
using System.Text.RegularExpressions;
...


string path = @"C:\temp";

Regex numExtRegex = new Regex(@"^(.*)\.(\d+)$");

foreach (string file in Directory.GetFiles(path))
{
    Match match = numExtRegex.Match(file);
    if (match.Success)
    {
        string originalFile = match.Groups[1].Value;
        string numericExtension = match.Groups[2].Value;

        string originalFileNameWithoutExtension = Path.GetFileNameWithoutExtension(originalFile);
        string extension = Path.GetExtension(originalFile);

        Console.WriteLine("File: {0}, numeric extension: {1}, file name w/o ext: {2}, ext: {3}", 
                originalFile, numericExtension, originalFileNameWithoutExtension, extension);
    }
}

正则表达式查找something.digits

使用这种过滤方式,您可以确定不会处理,例如一个人放在目录中的readme.txt ......