Двухбайтовые подстроки могут заменяться на
.T. режим прохода <cString> по байтам, а при значении .F. или по
умолчанию по словам (упорядоченным парам).
Возвращаемое значение
cReplString - модифицированная строка <cString>.
Описание
Двухбайтовые подстроки могут заменяться на другие подстроки той же
длины. С использованием данной функции, аналога CHARREPL(), можно
построить достаточно быстрый алгоритм для функции SOUNDEX() и легко
обрабатывать строки, считанные из видеопамяти или сгенерированные
Clipper-функцией I2BIN().
Способ обработки исходной строки <cString> зависит от значения
параметра <lMode>:
. При значении .F. параметра <lMode> строка обрабатывается шагами по
паре байтов.
. При значении .T. параметра <lMode> строка обрабатывается шагами
по одному байту. При этом, если выполнялся вызов CSETATMUPA(.T.), то
описываемая функция продолжает обработку со второго символа в
заменяемой паре, а иначе со следующей пары.
Примечания
. Термин "слово" используется здесь не в значении "элемент текста",
а в значении, используемом при программировании на языке Ассемблера.
Слово состоит из 16 битов, т.е. 2 байтов.
. Строка <cReplaceList> может быть короче, чем <cSearchList>.
Подстроки из <cSearchList>, для которых не нашлось соответствия,
заменяются на последнюю подстроку из <cReplaceList>.
. Параметр <cString> может быть передан по ссылке. При этом вызов
CSETREF(.T.), подавляющий возвращение функцией результата, позволяет
уменьшить потребности в рабочей памяти.
Примеры
. Замена "XX" на "CC":
? WORDREPL("CC", "AABBCCDDEE", "XX") // "AABBXXDDEE"
. Использование CSETATMUPA() и <lMode>:
CSETATMUPA(.F.) // Исходное состояние