Найти в TStringlist без учёта регистра

Общие вопросы: версии и диалекты, синтаксис языка, cтруктуры и типы данных (массивы, строки, списки...), обработка данных и т.д.
Ответить
Shouldercannon
Сообщения: 74
Зарегистрирован: 08 июн 2008, 15:49

26 апр 2011, 20:58

Код: Выделить всё

var
  s1, s2, s3: string;
  a, b: Integer;
  TSL: TStringList;
begin
  // Что ищем
  s2 := '007';
  // Чем заменяем
  s3 := '***';
  
  TSL := TStringList.Create;
  TSL.LoadFromFile('test.txt');

  b := 0;

  for a := TSL.Count - 1 downto 0 do
  if s2 = trim(TSL[a]) then
  begin
    TSL.Strings[a] := s3;
    b := b + 1;
  end;

  if b = 0 then Label1.Caption := 'Совпадений не найдено' else Label1.Caption := 'Произведено ' + IntToStr(b) + ' замен "' + s2 + '" на "' + s3 + '"';
  TSL.SaveToFile('test1.txt');
  TSL.Free;
Из
007
"007"
*007*
[007]
производится замена на *** только 007. Как сделать чтобы все 007 были заменены на *** и на выходе получилось
***
"***"
*****
[***]
Аватара пользователя
Игорь Акопян
Сообщения: 1419
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

03 май 2011, 16:42

ну как вариант не
if s2 = trim(TSL[a]) then
а
[syntax='delphi']
if pos(s2, TSL[a])>0 then
begin
StringReplace(TSL[a], s2, s3, [rfReplaceAll]);
Inc(b);
end;
[/syntax]
Изображение
Ответить