这是我的问题。我从目录中获取文件列表。文件名具有特定的命名约定,它们具有国家/地区2个字符前缀,然后是通用名称。我想根据通用名称获取文件,以便可以检索所有特定于国家/地区的文件。目前我正在硬编码国家前缀。 代码
string[] filePath = Directory.GetFiles(ConfigurationManager.AppSettings["InputFiles"]);
foreach (string inputfilepath in filePath)
{
try
{
if ((inputfilepath.ToUpper().Contains("IN_CCMS_CARDO_") ||
(inputfilepath.ToUpper().Contains("MY_CCMS_CARDO_")) ||
(inputfilepath.ToUpper().Contains("HK_CCMS_CARDO_")) ||
(inputfilepath.ToUpper().Contains("TW_CCMS_CARDO_")) ||
(inputfilepath.ToUpper().Contains("SG_CCMS_CARDO_")) ||
(inputfilepath.ToUpper().Contains("ID_CCMS_CARDO_")) ||
(inputfilepath.ToUpper().Contains("PH_CCMS_CARDO_")) ||
(inputfilepath.ToUpper().Contains("TH_CCMS_CARDO_"))))
{
// Do something here
}
我想用* _CCMS_CARDO替换SG_CCMS_CARO,这将获得名称中包含CCMS_CARDO的所有文件。
任何帮助将不胜感激。 感谢
感谢您的回答。但还有一个问题。我得到一个7个文件的列表,这些文件有类似的名字,如?? _ CCMS_CARDO,?? _ CCMS_CAMP,?? _ CCMS_RPC。我想要在Contains方法中匹配通配符模式,因为我正在为每个文件(?? _ CCMS_CARD等)做一些事情,因为这在多个地方使用,我不想做太多的更改。我真正想要的是替换多个nputfilepath.ToUpper()。包含(" ID_CCMS_CARDO _"))与nputfilepath.ToUpper()。包含(" ?? _ CCMS_CARDO _"))这将包含所有包含CCMS_CARDO.Thanks
的文件答案 0 :(得分:3)
Directory.GetFiles("\\PATH_HERE", "*_CCMS_CARDO", SearchOption.TopDirectoryOnly);
答案 1 :(得分:1)
使用'?'为零或一。此外,EnumerateFiles
通常更有效。
尝试
string[] countries = ["IN", "MY", ...];
foreach (var name in Directory.GetFiles(path, @"??_CCMS_CARD0*.*"))
{
var country = name.Substring(0, 2).ToUpper();
if (!countries.Contains(country))
continue;
// do something
}