问题描述
|
我想检索字符串列表中的行号(从文件中加载)。
Indexof似乎完全匹配。有没有办法使用Indexof的通配符版本来检索行?像SL.Indexof(\'?sometext \')之类的东西?
谢谢!
解决方法
如果要匹配字符串的某些部分而没有任何花哨的通配符(如在对另一个答案的注释中所示),则可以使用以下简单函数:
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单元中定义,并遵循convention5 convention的标准约定表示区分大小写,而indicate6ѭ表示不区分大小写。
, 没有内置的方法可在TStringList
中搜索通配符。您需要将第三方库(例如TPerlRegEx)用于正则表达式。