0

假设我想遍历一个目录中的所有文件,并且如果该文件具有图像格式的扩展名,例如 jpeg、bmp 或 png,我想将该文件复制到另一个目录。||有没有一种方法可以在不链接在一起的情况下检查所有图像扩展名?这是一个例子:

代替:

if(file.Extension == ".jpg" || 
     file.Extension == ".jpeg" || 
     file.Extension == ".bmp" || 
     file.Extension == ".png")
            //Copy To Image directory

我可以做类似的事情:

if (file.Extension.Contains(...)).

我知道 Contains 存在,但它不需要值数组(在这种情况下是扩展)

4

4 回答 4

4
List<string>validExtensions = new List<string>(){".jpg", ".jpeg" /* rest go here */ };
if(validExtensions.Contains(myFilenameExension))
{...}

如果您有很多扩展,我会将其从 List 切换到 HashSet,但对于少量值(即 4),List 将相同或更快。

于 2012-05-01T20:05:05.600 回答
2

创建一个集合类,如下所示:

List<string> validExtensions = new List<string>()
{
     ".jpg",
     ".jpeg",
     ".bmp",
     ".png"
};

然后做:

if (validExtensions.Any(ext=>file.Extension.Contains(ext)))
{
     //Do code.
}
于 2012-05-01T20:05:44.350 回答
1
List<string> extensions=new List<string>()
extensions.Add("jpg");
extensions.Add("png");
extensions.Add("mbp");

if(extensions.Contains(file.Extension)
{
 //do what you want
} 
于 2012-05-01T20:06:09.670 回答
1

if (file.Extension.Contains(...))

你想要相反的:

if(new [] {".jpg", /* etc */ ".png"}.Contains(file.Extension, StringComparer.InvariantCultureIgnoreCase))
{

}

这是一种 LINQ 方法,因此请确保您有一个using System.Linq地方。另外,我通过了一个比较器,以便忽略大小写。似乎对于您正在做的事情,区分大小写不是您想要的。

于 2012-05-01T20:07:11.890 回答