![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как найти подстроку в строке??? [D6, WinXP]
Netizen © (2002-08-22 23:00:00)Вобщем такой прикол - допустим есть у меня строка вводимая юзером (Edit1)"ффропропффккерофф" и он же вводит подстроку (Edit2) например фф и в Edit3 должен вывестись результат количества подстроки в строке - тоесть в даном случае 3!
Anatoly Podgoretsky (2002-08-23 00:12:00) [1]Лучше использовать StrLComp или StrLIComp, что бы не проводить копирования, думаю будет значительно быстрее, хотя требуется проверка.
if StrLComp(S, Sub, l) = 0 then
Ученик (2002-08-23 00:01:00) [2]>Netizen © (22.08.02 23:00)
function SubCount(const S, Sub : string) : Integer;
var
i, l : Integer;
begin
Result := 0;
l := Length(Sub);
for i := 1 to Length(S) - l + 1 do
if Copy(s, i, l) = Sub then
Inc(Result)
end;
Anatoly Podgoretsky (2002-08-22 23:52:00) [3]Если две то Delete(Src, Result, 1); только лучше уйти от рекурсии, а то на длинных строках будет проблема со стеком
Юрий Зотов (2002-08-22 23:51:00) [4]Дополнение.
Вообще-то, задача поставлена некорректно. Например, сколько раз входит подстрока "aa" в строку "aaaа"?
Варианты ответов:
- 2 раза;
- 3 раза.
И оба правильные. Смотря, как считать.
Ученик (2002-08-22 23:48:00) [5]>Netizen © (22.08.02 23:00)
А ффф - это 2 фф или как ?
Юрий Зотов (2002-08-22 23:46:00) [6]Что-то типа этого (писал "на лету", не проверял, проверьте сами).
function SubCount(Src, Sub: string): integer;
begin
Result := Pos(Sub, Src);
if Result > 0 then
begin
Delete(Src, Result, Length(Sub));
Result := 1 + SubCount(Src, Sub)
end
end;