我不认为有比你的第一个想法更简单的方法。 尽管如此,为此使用正则表达式的优点是,您可以更好地控制使用正确的语法过滤文件。我只写了一个小例子:
...
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 ...
不需要。'Path。*'方法是推荐的方法。 – DrKoch
我同意'Path.Get *'是推荐的方法。为了完整起见,我会提到我还看到了诸如'path.Split('\\')。Last()'(用于获取没有目录的文件名)或'filename.Split(' 。')First()'(将文件名称提交到第一个点,即通常会删除扩展名,但可能不止这些),但这些并不会成为特别好的解决方案。 '远离这些。 – stakx
你能修改你的命名策略吗?由于类似这样的原因,像文件(1).txt这样的名称与版本化文件名相比要好得多。 扩展名(最后一个字符串)在窗口中具有非常特殊的含义。没有很好的理由,你不应该改变扩展名。 – DrKoch