TStringList.IndexOf: подстановочный знак в indexof? - PullRequest
6 голосов
/ 14 июня 2011

Я хочу получить номер белья в списке строк (загружается из файла). Indexof, похоже, соответствует точно . Есть ли способ получить строку с подстановочной версией Indexof? что-то вроде SL.Indexof ('? sometext')?

Спасибо!

Ответы [ 2 ]

9 голосов
/ 14 июня 2011

Если вы хотите сопоставить некоторую часть строки без каких-либо необычных символов подстановки, как вы указали в комментарии к другому ответу, то вы можете использовать простую функцию, подобную этой:

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 определены в RTL-единице StrUtils и соответствуют стандартному соглашению Str для указания сравнения с учетом регистра и Text для указания без учета регистра.

7 голосов
/ 14 июня 2011

Нет встроенного способа поиска TStringList для подстановочных знаков. Вам необходимо использовать стороннюю библиотеку, например TPerlRegEx для регулярных выражений.

...