问题
我想检索字符串列表中的行号(从文件加载)。
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[Result], 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[Result], SubStr) then
- exit;
- Result := -1;
- end;
复制代码
ContainsStr 和 ContainsText 在 StrUtils RTL 单元中定义,遵循标准约定 Str 表示区分大小写的比较,Text 表示不区分大小写。
|