@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
- что поиск должен производиться по всей строке, а не только до первого символа новой строки.
@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;