Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TStringList.IndexOf: wildcard within indexof?

Tags:

indexof

delphi

I want to retrieve the linenumber in a stringlist (loaded from a file). Indexof seems to match exactly. Is there a way to retrieve the line with a wildcard-version of Indexof? something like SL.Indexof('?sometext')?

Thanks!

like image 447
martin Avatar asked Jun 14 '11 09:06

martin


1 Answers

If you want to match some part of the string, without any fancy wildcards, as you indicate in a comment to another answer, then you can use a simple function like this:

function FindMatchStr(Strings: TStrings; const SubStr: string): Integer;
begin    
  for Result := 0 to Strings.Count-1 do
    if ContainsStr(Strings[Result], SubStr) then
      exit;
  Result := -1;
end;

If you want a case-insensitive match then you can use this:

function FindMatchText(Strings: TStrings; const SubStr: string): Integer;
begin    
  for Result := 0 to Strings.Count-1 do
    if ContainsText(Strings[Result], SubStr) then
      exit;
  Result := -1;
end;

ContainsStr and ContainsText are defined in the StrUtils RTL unit and follow the standard convention of Str to indicate case sensitive comparison, and Text to indicate case insensitive.

like image 69
David Heffernan Avatar answered Sep 22 '22 17:09

David Heffernan