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

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

あなたは反対が欲しい:

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

}

これは LINQ メソッドなので、using System.Linqどこかに があることを確認してください。また、大文字と小文字を区別しないように比較子を渡します。あなたがしていることのように思えますが、大文字と小文字の区別はあなたが望むものではありません。

于 2012-05-01T20:07:11.890 に答える
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 に答える