Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.02;
Скачать: CL | DM;

Вниз

Как найти подстроку в строке???   Найти похожие ветки 

 
Netizen ©   (2002-08-22 23:00) [0]

Вобщем такой прикол - допустим есть у меня строка вводимая юзером (Edit1)"ффропропффккерофф" и он же вводит подстроку (Edit2) например фф и в Edit3 должен вывестись результат количества подстроки в строке - тоесть в даном случае 3!


 
Юрий Зотов ©   (2002-08-22 23:46) [1]

Что-то типа этого (писал "на лету", не проверял, проверьте сами).

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;


 
Ученик ©   (2002-08-22 23:48) [2]

>Netizen © (22.08.02 23:00)
А ффф - это 2 фф или как ?


 
Юрий Зотов ©   (2002-08-22 23:51) [3]

Дополнение.

Вообще-то, задача поставлена некорректно. Например, сколько раз входит подстрока "aa" в строку "aaaа"?

Варианты ответов:
- 2 раза;
- 3 раза.

И оба правильные. Смотря, как считать.




 
Anatoly Podgoretsky ©   (2002-08-22 23:52) [4]

Если две то Delete(Src, Result, 1); только лучше уйти от рекурсии, а то на длинных строках будет проблема со стеком


 
Ученик ©   (2002-08-23 00:01) [5]

>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-23 00:12) [6]

Лучше использовать StrLComp или StrLIComp, что бы не проводить копирования, думаю будет значительно быстрее, хотя требуется проверка.

if StrLComp(S, Sub, l) = 0 then



Страницы: 1 вся ветка

Текущий архив: 2002.09.02;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.019 c
14-3566
tovSuhov
2002-08-05 16:19
2002.09.02
Посоветуйте компонент...


14-3618
MBo
2002-08-07 12:35
2002.09.02
Еще задачки ;)


1-3392
[BAD]Angel
2002-08-22 13:46
2002.09.02
Как узнать?


8-3525
Fredericco
2002-04-18 10:48
2002.09.02
Вопрос по DireckX


3-3230
Pavel_
2002-08-10 08:08
2002.09.02
Ошибка