Заметка №1. Количество вхождений подстроки в строку.
05.05.2011
Теория
Это делается в одно действие, нам надо вычесть из общего количества символов в строке количество символов в изменённой строке без тех символов, которые мы считаем. Т.е. если из длины строки "Мама мыла раму" вычесть длину строки "Мамымылараму", то мы получим разницу в 2 символа (тут считали количество пробелов).
Практика
Ниже мы считаем количество пробелов в строке str
Length(str) - Length(StringReplace(str, ' ', '', [rfReplaceAll]))
Это вариант годен только тогда, когда считаем количество вхождений одного символа, а если ищём количество не одного символа а целой строки то в конце надо добавить деление на длину этой строки.
Length(str) - Length(StringReplace(str, substr, '', [rfReplaceAll])) / Length(substr)
В виде функции:
function CountPos(str: stringsubstr: string;): Integer;
begin
Result := (Length(str) - Length(StringReplace(str, substr, '', [rfReplaceAll]))) / Length(substr);
end;