找回密码
 立即注册
Strings通配符IndexOf大小写 | 软件设计/软件工程 2022-05-06 237 0star收藏 版权: . 保留作者信息 . 禁止商业使用 . 禁止修改作品
问题
我想检索字符串列表中的行号(从文件加载)。

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

谢谢!

回答
如果您想匹配字符串的某个部分,而不需要任何花哨的通配符(如另一个答案的评论中所示),您可以使用如下简单的函数:
  1. function FindMatchStr(Strings: TStrings; const SubStr: string): Integer;
  2. begin   
  3.   for Result := 0 to Strings.Count-1 do
  4.     if ContainsStr(Strings[Result], SubStr) then
  5.       exit;
  6.   Result := -1;
  7. end;
复制代码

如果需要不区分大小写的匹配,可以使用以下命令:
  1. function FindMatchText(Strings: TStrings; const SubStr: string): Integer;
  2. begin   
  3.   for Result := 0 to Strings.Count-1 do
  4.     if ContainsText(Strings[Result], SubStr) then
  5.       exit;
  6.   Result := -1;
  7. end;
复制代码

ContainsStr 和 ContainsText 在 StrUtils RTL 单元中定义,遵循标准约定 Str 表示区分大小写的比较,Text 表示不区分大小写。





上一篇:C++与gdB调试/打印自定义类型:以NLHMANN JSON库为例
下一篇:Git bash 和 Git GUI 不适用于 Windows 10