Остаток строки после последнего вхождения
cTextseq := "ABCDEABC123AXCK"
? BEFORATNUM("ABC", cTextseq) // ABCDE
? BEFORATNUM("A?C", cTextseq) // ABCDEABC123
. Остаток строки после последнего вхождения подстроки, выровненный
по позиции 15:
cTextseq := "ABCDEABC123AXCK"
? ATADJUST("ABC", cTextseq, 15) // ABCDE ABC123AXCK
? ATADJUST("A?C", cTextseq, 15) // ABCDEABC123 AXCK
. Функция ATREPL() создает необычную ситуацию. Если выражение поиска
содержит универсальные символы сопоставления, то осуществляется замена
для найденной подстроки и, если с помощью CSETATMUPA(.T.) установлен
режим прохода по символам, начинается внутренняя рекурсия:
CSETATMUPA(.T.)
cTextseq := "ABCDEABC123AXCK"
? ATREPL("D?", cTextseq, "DX") // ABCDXXXXXXXXXXXX
. Использование универсального символа сопоставления уменьшает
степень различия, определяемую функцией STRDIFF():
? STRDIFF("ABC", "AXC") // Степень различия 3
? STRDIFF("A?C", "AXC") // Степень различия 0
See Also: AFTERATNUM()
ATADJUST()
ATNUM()
ATREPL()
NUMAT()
STRDIFF()
STRDIFF()
Определяет степень различия двух строк ("расстояние Левенштейна").
------------------------------------------------------------------------------
Синтаксис
STRDIFF(<cString1>, <cString2>, [<nReplace>],
[<nRemove>], [<nInsert>]) --> nDifferenceValue
Параметры
<cString1> - символьный параметр, задающий первую сравниваемую строку,
длиной не более 254 символов, над которой в процессе анализа
выполняются операции замены (Replace), вставки (Insert) и удаления
(Remove) символов.