如何读取文件制作过滤器

本文关键字:文件 过滤器 读取 何读取 | 更新日期: 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"生成器。把你的字符串值放在那里,它会返回你要选择的正则表达式的组合。试试你自己的吧,这是最好的方法。