当前位置: 首页 > 编程语言 > C#

在目录c#中查找具有匹配模式的文件?

时间:2023-04-10 14:03:24 C#

在目录c#中查找具有匹配模式的文件?字符串文件名="";字符串sourcePath=@"C:vish";字符串targetPath=@"C:SR";字符串sourceFile=System.IO.Path.Combine(sourcePath,fileName);字符串destFile=System.IO.Path.Combine(targetPath,fileName);字符串模式=@"23456780";varmatches=Directory.GetFiles(@"c:vish").Where(path=>Regex.Match(path,pattern).Success);foreach(匹配的字符串文件){Console.WriteLine(file);文件名=System.IO.Path.GetFileName(文件);控制台.WriteLine(文件名);destFile=System.IO.Path.Combine(targetPath,文件名);系统。IO.File.Copy(file,destFile,true);我上面的程序适用于单一模式。我正在使用上面的程序在具有匹配模式的目录中查找文件,但在我的例子中,我有多个模式,所以我需要将字符串模式变量中的多个模式作为数组传递,但我不知道如何返回Things可以在Regex.Match中操作这些模式。谁能帮我?您可以将OR添加到正则表达式:stringpattern=@"(23456780|otherpatt)";改变.Where(path=>Regex.Match(path,pattern).Success);到.Where(path=>patterns.Any(pattern=>Regex.Match(path,pattern).Success));其中patterns是IEnumerable,例如:string[]patterns={"123","456","789"};如果表达式超过15个,您可能需要增加缓存大小:Regex.CacheSize=Math.Max(Regex.CacheSize,patterns.Length);有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.cachesize.aspx。Aleroot的答案是最好的,但如果你想在你的代码中这样做,你也可以这样做:string[]patterns=newstring[]{"23456780","anotherpattern"};varmatches=patterns.SelectMany(pat=>Directory.GetFiles(@"c:vish").Where(path=>Regex.Match(path,pat).Success));例如,您可以使用最简单的形式stringpattern=@"(23456780|abc|.doc$)";这将匹配您选择的模式或具有abc模式的文件或具有.doc扩展名的文件可以在此处找到对可用于Regex类的模式的参考教程:在目录c#中查找具有匹配模式的文件?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: