52ky 发表于 2022-5-6 13:03:19

TStringList.IndexOf:IndexOf中的通配符?

问题
我想检索字符串列表中的行号(从文件加载)。

Indexof 似乎完全匹配。有没有办法使用 Indexof 的通配符版本检索行?像 SL.Indexof('? what literal')?

谢谢!

回答
如果您想匹配字符串的某个部分,而不需要任何花哨的通配符(如另一个答案的评论中所示),您可以使用如下简单的函数:
function FindMatchStr(Strings: TStrings; const SubStr: string): Integer;
begin   
for Result := 0 to Strings.Count-1 do
    if ContainsStr(Strings, SubStr) then
      exit;
Result := -1;
end;
如果需要不区分大小写的匹配,可以使用以下命令:
function FindMatchText(Strings: TStrings; const SubStr: string): Integer;
begin   
for Result := 0 to Strings.Count-1 do
    if ContainsText(Strings, SubStr) then
      exit;
Result := -1;
end;
ContainsStr 和 ContainsText 在 StrUtils RTL 单元中定义,遵循标准约定 Str 表示区分大小写的比较,Text 表示不区分大小写。



页: [1]
查看完整版本: TStringList.IndexOf:IndexOf中的通配符?