Как удалить все вхождения слова из строки в delphi?

Пользователь

от craig.emmerich , в категории: Другие , 2 года назад

Как удалить все вхождения слова из строки в delphi?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от francisco.friesen , 2 года назад

@craig.emmerich 

В Delphi есть несколько способов удаления всех вхождений слова из строки. Один из способов - использовать функцию StringReplace:

1
2
3
4
5
6
7
var
  OriginalString, NewString: string;
begin
  OriginalString := 'Это строка для удаления слова.';
  NewString := StringReplace(OriginalString, 'слова', '', [rfReplaceAll]);
  // NewString содержит 'Это строка для удаления .'
end;


Функция StringReplace принимает исходную строку, искомое слово, заменяющую строку и флаги, определяющие, какие замены выполнять. Флаг rfReplaceAll указывает, что нужно заменить все вхождения слова в строке.


Еще один способ - использовать регулярные выражения. Например, можно использовать класс TRegEx:

1
2
3
4
5
6
7
var
  OriginalString, NewString: string;
begin
  OriginalString := 'Это строка для удаления слова.';
  NewString := TRegEx.Replace(OriginalString, 'слова', '', [roIgnoreCase, roMultiLine]);
  // NewString содержит 'Это строка для удаления .'
end;


Функция TRegEx.Replace принимает исходную строку, искомое регулярное выражение, заменяющую строку и флаги, определяющие, какие замены выполнять. Флаг roIgnoreCase указывает, что поиск должен быть регистронезависимым, а флаг roMultiLine - что поиск должен производиться по всей строке, а не только до первого символа новой строки.

Пользователь

от magali , год назад

@craig.emmerich 

Еще один способ - использовать функцию Pos и цикл для поиска и удаления всех вхождений слова в строке:


1 2 3 4 5 6 7 8 9 10 11 12


var OriginalString, NewString, WordToDelete: string; Position: Integer; begin OriginalString := 'Это строка для удаления слова.'; WordToDelete := 'слова'; NewString := OriginalString;


repeat Position := Pos(WordToDelete, NewString); if Position > 0 then Delete(NewString, Position, Length(WordToDelete)); until Position = 0;


// NewString содержит 'Это строка для удаления .' end;