我可以使用通配符来比较字符串吗?

问题描述 投票:0回答:2

我有一组文件。

001.txt
001a.txt
002.txt 
002a.txt
...

我想用下面的代码来排除以... a诸如 001a.txt

PROCEDURE TForm1.FindFiles(StartDir, FileMask: STRING);
VAR
  sr: TSearchRec;
  IsFound: Boolean;
BEGIN
  IsFound := FindFirst(StartDir + FileMask, faAnyFile - faDirectory, sr) = 0;
  WHILE IsFound DO
  BEGIN    
    if sr.Name <> '*a.*' then
      gFiles.add(StartDir + sr.Name);

    IsFound := FindNext(sr) = 0;
  END;
  FindClose(sr);
END;

FileMask 传递给这个过程的是 '*.*' 来包含所有文件。

然而上面的搜索结果是返回所有文件。

所以我的问题是如何从搜索中排除这些文件?

delphi wildcard
2个回答
7
投票

Delphi提供单元 System.Masks 为此。这里合适的函数是 匹配面具:

if MatchesMask(sr.Name, '*a.*') then
© www.soinside.com 2019 - 2024. All rights reserved.