TStringList.IndexOf:indexof中的通配符?

mar*_*tin 6 delphi indexof

我想在字符串列表中检索linenumber(从文件加载).Indexof似乎完全匹配.有没有办法检索带有通配符版本的Indexof的行?像SL.Indexof('?sometext')这样的东西?

谢谢!

Dav*_*nan 9

如果你想匹配字符串的某些部分,没有任何花哨的通配符,正如你在另一个答案的注释中指出的那样,那么你可以使用这样一个简单的函数:

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;
Run Code Online (Sandbox Code Playgroud)

如果你想要一个不区分大小写的匹配,那么你可以使用这个:

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;
Run Code Online (Sandbox Code Playgroud)

ContainsStr并且ContainsTextStrUtilsRTL单元中定义并遵循标准惯例Str来指示区分大小写的比较,并Text指示不区分大小写.


Zru*_*uty 7

没有内置的方法来搜索TStringList通配符.您需要使用第三方库(例如TPerlRegEx)来表示正则表达式.

  • 或者在Delphi XE中使用内置的正则表达式支持 (3认同)
  • 我需要根据我六年的Delphi 6经验来阻止德尔福的答案...... (2认同)
  • @Zruty:我认为有足够的人没有使用XE来使你的答案有用(+1).除了OP没有提到特定的Delphi版本. (2认同)