Никто не реализовывал на кларе функцию поиска и замены в строке?
Скажем, берем на входе строку, а на выходе получаем строку, в которой все вхождения некоторой подстроки заменены на другую строку.
Типа как в PERL
$line =~ s/A/Б/g;
А то опять велосипед изобретать приходится.
---
С уважением, Власов Никита
(Добавление)
Присоединяюсь. Но у меня интерес такой - надо выполнить замены в большой (от 100К до 20М) строке. А в этом случае передача параметров в Instring и формирование вырезок из строки крайне тормозит выполнение. Может быть, кто разработал нечто подходящее?
---------------------------------------
C уважением,
Юрий Философов,
Главный программист
Корпорация "Диполь", Саратов
E-mail yufil@tacis-dipol.ru (служ)
yufil@mail.ru (дом)
ICQ#75924439
Привет.
Возьми RegExp на http://clarionlife.net
С уважением, Михаил
loop + matсh/instring + sub/[]
У меня такого полно, но смысла выделять это в СОВСЕМ отдельную процедуру не вижу.
Задачка для начинающих
Это уже серьезно. Файл что-ли обрабатываешь?Присоединяюсь. Но у меня интерес такой - надо выполнить замены в большой (от 100К до 20М) строке.
Единственное, что приходит в голову - сбрасывай в файл и вызывай внешнюю задачу поиска и замены.
Правда на чтении/записи можешь потерять больше чем выиграешь.
Был-бы исходный текст нового match...
(У меня переведен на Clarion очень старый, еще времен TopSpeed C)
------------------------------------------------------------
Igor Gubin (igor@quantor.com)
Quantor-Soft Metal
Phone/Fax: (+7 095) 234 4905
WEB: http://www.metaldata.info
http://www.metaldata.ru
Да. И не один, много. Обработка в файле исключается - замен около десятка. Поэтому файл вычитывается, производится замена и пишется назад. Но обработка файла размером 12 мегабайт занимает около 10 минут. Долго...Файл что-ли обрабатываешь?
Меня и Instring устраивает. Проблема как раз в том, что если я задамБыл-бы исходный текст нового match...
If Instring('xxx',S,1,1000) - происходит копирование значения S.
Собственно, версию Instring без копирования S (с параметром *String или *CString) сделать недолго.
Но потом... S=S[1:I-1] & Loc:Repl & S[I+n : Len(S)] - ещё куча операций с длинными строками. Вот от этих операций бы избавиться...
---------------------------------------
C уважением,
Юрий Философов
Написал: ClaList(2)