如何读取文件制作过滤器
本文关键字:文件 过滤器 读取 何读取 | 更新日期: 2023-09-27 17:50:05
我需要读到一些目录,问题是我需要通过文件名做一个过滤器。
示例:"1000123107.jpg"
, "1700123107.jpg"
, "1005123101.jpg"
, "1077123107.jpg"
,在这种情况下,我需要得到以字符"7.jpg"
结尾的图像:只有"1000123107.jpg"
,我尝试这个:
string[] filePaths = System.IO.Directory.GetFiles(
filePath + "''", "*7.jpg", SearchOption.AllDirectories);
但是不行,因为它还会得到其他在开头或中间有"7"
的图像。("1000123107.jpg"
和"1700123107.jpg"
和"1077123107.jpg"
)所以这是错误的!!
我只需要返回"1000123107.jpg"
。
谁来告诉我该怎么办?
谢谢。
您当前的正则表达式只要求以"7.jpg"结尾。似乎你想过滤只有一个"7"的文件,它在文件名的最后。你可以像这样使用正则表达式:
^[^7]*7.jpg$
这是如何分解的:
^ - Start of the line.
[^7]* - Allow any number of characters that are not sevens.
7.jpg - Ensure that there is a 7 at the end of the filename.
$ - End of the line.
到目前为止,您有一个以"7.jpg"结尾的文件列表。要过滤掉文件名中有7个其他位置的文件,请使用regex:
^[^7]*7'.jpg$
(注意我最初的回答没有在开头和结尾包括^和$,您需要使用它们来避免虚假匹配)
我想你在找这个
var fileList = (new DirectoryInfo(filePath)).GetFiles().Where(a => Regex.IsMatch(a.Name, "^[^7]*7.jpg$")).ToList();
也许这能帮上忙。
使用text2re,一个免费的基于web的"regex by example"生成器。把你的字符串值放在那里,它会返回你要选择的正则表达式的组合。试试你自己的吧,这是最好的方法。