Форум: "Основная";
Текущий архив: 2002.09.02;
Скачать: [xml.tar.bz2];
ВнизКак найти подстроку в строке??? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c