我在一个像这样的路径
的文件夹中有10个zip文件TargetDirectory =“C:\ docs \ folder \”
某些zip文件名称是这样的
abc-19870908.Zip
abc-19870908.zip
abc-12345678.zip
有些像这样......
doc.zip
doc123.zip
..
我使用以下代码获取所有文件名...
string [] fileEntries = Directory.GetFiles(targetDirectory);
foreach(string fileName in fileEntries)
{
// here I need to compare ,
// I mean I want to get only these files which are having
// these type of filenames `abc-19870908.Zip`
if (filename == "")
{
// I want to do something
}
}
我需要在这行if(filename == "")
中加上双引号来获得abc-19870908.Zip
这些文件名。
请问任何人对此有任何想法吗?
非常感谢......
答案 0 :(得分:10)
如果您只对包含短划线的zip文件感兴趣,可以向Directory.GetFiles提供搜索模式。
string [] fileEntries = Directory.GetFiles(targetDirectory, "*-*.zip");
有关这些搜索模式的详细信息,请查看此链接:http://msdn.microsoft.com/en-us/library/wz42302f.aspx
答案 1 :(得分:4)
我想你可以做到
if (filename.Contains("-"))
{
...
}
如果您感兴趣的文件名中始终存在-
或
if (filename.StartsWith("abc-"))
{
...
}
如果文件名始终以abc-
开头,则表示您感兴趣的文件名。
答案 2 :(得分:1)
你可以if(filename.StartsWith ("abc-") )
或者你可以if (filename.Contains ( "-" ) )
或者你可以string [] fileEntries = Directory.GetFiles(targetDirectory, "abc-*.Zip");
答案 3 :(得分:1)
// Consider using this overload:
// public static string[] GetFiles( string path, string searchPattern)
string [] fileEntries = Directory.GetFiles(targetDirectory, "abc*.zip");
或者,您可以使用正则表达式,如下所示:
string [] fileEntries = Directory.GetFiles(targetDirectory);
foreach(string fileName in fileEntries)
{
if(Regex.Match (filename, @"abc.*?\.zip", RegexOptions.IgnoreCase))
{
// i want to do something
}
}
答案 4 :(得分:1)
List<String> files = Directory.GetFiles(@"C:\docs\folder\").ToList();
var g = from String s in files where s.StartsWith("abc") select s;
foreach(var z in g)
{
//Do stuff in here as a replacement for your if
}
答案 5 :(得分:1)
您可以使用与您的文件名匹配的正则表达式,沿着这些行:
string sPattern = "abc-\d+\.zip";
string [] fileEntries = Directory.GetFiles(targetDirectory);
foreach(string fileName in fileEntries)
{
// here i need to compare , i mean i want to get only these files which are having these type of filenames `abc-19870908.Zip`
if(System.Text.RegularExpressions.Regex.IsMatch(filename , sPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase))
{
// i want to do something
}
}
正则表达式“abc- \ d + .zip”表示 字符串“abc-”后跟任意数字的数字,后跟a。后跟字符串“zip”(regular expression syntax)