我需要使用某种文件名格式从FTP服务器下载文件。服务器中的文件名可能如下所示:
如果名称格式为O-XXXX-XXXXXXXX_XXXXXXXXXXXXXXXX,我只想下载文件
我使用的是以下代码,但效果不是很好。仅选择上述文件名格式的文件最有效的方法是什么?
using (Stream responseStream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(responseStream))
{
while (!reader.EndOfStream)
{
fileName = reader.ReadLine();
if (fileName.ToUpper().IndexOf("O-") > -1)
files.Add(fileName);
}
}
}
结果是只选择这些文件:
答案 0 :(得分:3)
假设您已将文件列表存储在List<string>
中,则提取很简单
List<string> files = new List<string>()
{
"O-0098-00009801_08052014054258.xml",
"ORDER ID 3359_08062014121815.xml",
"O-0302-00022043_07312014085513.xml",
"O-LABELS_94920235569876.XML",
"JO ANN_08062014170911.xml",
"O-0233-00026378_07312014155245.xml",
"LABELS_08052014174907.xml"
};
Regex r = new Regex(@"O-\d{4}-\d{8}_\d{14}");
var result = files.Where(x => r.IsMatch(x)).ToList();
答案 1 :(得分:0)
你可能只是这样做:
List<string> orders = new List<string>()
{
"O-0098-00009801_08052014054258.xml",
"ORDER ID 3359_08062014121815.xml",
"O-0302-00022043_07312014085513.xml",
"O-LABELS_94920235569876.XML",
"JO ANN_08062014170911.xml",
"O-0233-00026378_07312014155245.xml",
"LABELS_08052014174907.xml"
};
List<string> valid = new List<string>()
{
"O-0098-00009801_08052014054258.xml",
"O-0302-00022043_07312014085513.xml",
"O-0233-00026378_07312014155245.xml"
};
List<string> order = orders.Where(x => valid.Contains(x)).ToList();
如果你有List
有效/总数,你可以用上述方式完成。否则你可以使用史蒂夫回答的正则表达式。