Форум: "Потрепаться";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
ВнизБыстрый способ вырезать строку Найти похожие ветки
← →
Piter © (2005-01-03 18:25) [0]Нужен наиболее быстрый способ вырезать одну строку из другой. Что-то типа:
function CuteString(BeginSeparator: string; EndSeparator: string; s: string): string
То есть, функции передается сама строка и два разделителся. И функция должна вернуть строку между двумя разделителями.
Пример:CuteString("w", "t", "qwerty") = "er"
CuteString("qw", "ty", "qwerty") = "er"
CuteString("", "rt", "qwerty") = "qwe"
CuteString("qw", "", "qwerty") = "erty"
CuteString("a", "b", "baab") = "a"
CuteString("b", "a", "baab") = ""
← →
begin...end © (2005-01-03 18:26) [1]Предлагаю использовать PosEx и Copy
← →
Чеширский_Кот © (2005-01-03 18:45) [2]тогда уж правильнее - CutString
CuteString - это из другой оперы
← →
Piter © (2005-01-03 18:48) [3]begin...end © (03.01.05 18:26) [1]
Предлагаю использовать PosEx и Copy
например?
← →
AlterEgo of WondeRu © (2005-01-03 18:48) [4]может не нада на праздники программировать!!!!!????????
← →
Piter © (2005-01-03 18:48) [5]begin...end © (03.01.05 18:26) [1]
хотя в общем понятно что ты имеешь в виду... но имхо, это далеко не самый быстрый способ... особенно я не уверен в скорости PosEx...
← →
begin...end © (2005-01-03 18:57) [6]> [3] Piter © (03.01.05 18:48)
function CuteString(BeginSeparator: String; EndSeparator: String; S: String): String;
var
P1, P2, L1, L2: Integer;
begin
L1 := Length(BeginSeparator);
L2 := Length(EndSeparator);
if (L1 > 0) and (L2 > 0) then
begin
P1 := Pos(BeginSeparator, S);
if P1 > 0 then
begin
Inc(L1, P1);
P2 := PosEx(EndSeparator, S, L1);
if P2 > 0 then
Result := Copy(S, L1, P2 - L1)
end
end
end.
> [5] Piter © (03.01.05 18:48)
Эффективность PosEx и вообще любой функции поиска строки зависит от конкретной входной строки. Например, есть алгоритм Боуэра и Мура, но он иногда бывает довольно медленным, а иногда даёт огромный прирост в производительности.
"Практика - критерий истины" (© Игорь Шевченко)
Можно подумать и сделать что-то наподобие конечного автомата... Но, думаю, будет тоже не быстро...
← →
Чеширский_Кот © (2005-01-03 19:06) [7]CuteString, гы
← →
Cobalt © (2005-01-04 00:59) [8]:)
Ох, Piter ©, you are so cute ;)
^__^
← →
Юрий Зотов © (2005-01-04 01:36) [9]Блин, бывает же приятно почитать...
Не шучу. Правда. Имхо, конечно.
> Автору вопроса
Истина - в [4].
Решение - в исходниках QString.
← →
KilkennyCat © (2005-01-04 02:14) [10]хе... а я бы сделал в repeat until попиксельно сравнивая...
← →
GuAV © (2005-01-04 02:24) [11]KilkennyCat © (04.01.05 2:14) [10]
А шрифт какой ? WebDings ?
← →
DeadMeat © (2005-01-04 03:13) [12]
> Чеширский_Кот ©
Эка тебя приперло... ;)
СимташинаяСтрочка... Гыгы...
---
...Death Is Only The Begining...
← →
KilkennyCat © (2005-01-04 03:17) [13]при чем здесь шрифт?
Repeat
pusk := string[i] = start;
inc(i);
if pusk then result := result + string[i];
until (i = length(string)) or (string[i+1] = stop);
примерно так. Правда, наверное ошибочка выскочит в проверке условия цикла, когда i станет = length(string), string[i+1] наверное, глюкнет.
← →
DeadMeat © (2005-01-04 03:34) [14]
> хе... а я бы сделал в repeat until попиксельно сравнивая...
Походу спать уже пора... По крайней мере я пошел...
---
...Death Is Only The Begining...
← →
KilkennyCat © (2005-01-04 03:37) [15]
> DeadMeat © (04.01.05 03:34) [14]
ну, в данном случае, один символ строки все равно что один пиксел картинки - и то и другое элемент массива. Просто посимвольно звучит не так забавно, как попиксельно. :)
← →
Piter © (2005-01-04 22:00) [16]Юрий Зотов © (04.01.05 1:36) [9]
Блин, бывает же приятно почитать...
Не шучу. Правда. Имхо, конечно.
Юрий, если честно - я не понял о чем вы...
Юрий Зотов © (04.01.05 1:36) [9]
Решение - в исходниках QString
Лень матушка :)))
Пойду гуглить... или не пойду...
← →
Piter © (2005-01-04 22:00) [17]Юрий Зотов © (04.01.05 1:36) [9]
Блин, бывает же приятно почитать...
Не шучу. Правда. Имхо, конечно.
Юрий, если честно - я не понял о чем вы...
Юрий Зотов © (04.01.05 1:36) [9]
Решение - в исходниках QString
Лень матушка :)))
Пойду гуглить... или не пойду...
← →
250 (2005-01-04 23:30) [18]>Лень матушка :)))
Все это отлично реализовано в функциях модуля QStrings.pas
а взять его можно здесь:
http://www.dbwork.kuban.ru/download/qstrings.zip
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.042 c