13.11. STRING

About
Functions order

13.11.1. About STRING

13.11.2. STRING functions order

ADDSLASHES() Возвращает строку с символами слеш (\)
ALLTRIM() Удаляет ведущие и замыкающие пробелы в строке символов.
ASC() Преобразует символ в его код ASCII.
AT() Возвращает позицию подстроки в символьной строке.
BETWEEN() Проверка значения
BUNZIP2() Распаковывает строку по BZIP2 алгоритму.
BZIP2() Пакует строку по bZIP2 алгоритму.
CHR() Преобразует код ASCII в его символьное значение.
CSCOUNT() Возвращает количество заданных символов в строке.
DSTRTON() Преобразует строку c "double"-представлнием в xClipper-число.
EMPTY() Определяет, является ли результат выполнения выражения пустым.
FSTRTON() Преобразует строку c "float"-представлнием в xClipper-число.
FT_AT2() Find position of the nth occurrence of a substring
FT_BITCLR() Clear (reset) selected bit in a byte
FT_BITSET() Set selected bit in a byte
FT_BYTEAND() Perform bit-wise AND on two ASCII characters (bytes)
FT_BYTENEG() Perform bit-wise negation on an ASCII character
FT_BYTENOT() Perform bit-wise NOT on an ASCII character (byte)
FT_BYTEOR() Perform bit-wise OR on two ASCII characters (bytes)
FT_BYTEXOR() Perform bit-wise XOR on two ASCII characters (bytes)
FT_FINDITH() Find the "ith" occurrence of a substring within a string
FT_ISBIT() Test the status of an individual bit
FT_ISBITON() Determine the state of individual bits in a number
FT_METAPH() Convert a character string to MetaPhone format
FT_NOOCCUR() Find the number of times one string occurs in another
FT_PCHR() Convert printer control codes
GLOB() Проверка на соответствие строки регулярному выражению.
GUNZIP() Распаковывает строку по GZIP алгоритму.
GZIP() Пакует строку по GZIP алгоритму.
HARDCR() Заменяет все мягкие возвраты каретки в символьной строке жесткими
HASHNAME() Возвращает строку, из которой был получен хэш-код.
HASHSTR() Возвращает хэш-код строки.
ISALPHA() Определяет, является ли самый левый символ в строке алфавитным.
ISDIGIT() Определяет, является ли первый символ в строке цифрой.
ISLOWER() Определяет, является ли первый символ в строке строчной буквой.
ISUPPER() Определяет, является ли первый символ в строке заглавной буквой.
LEFT() Определяет подстроку, начиная с первого символа в строке.
LEN() Определяет длину символьной строки или количество элементов в массиве.
LIKE() Проверка на соответствие строки простой маске.
LOWER() Переводит символы из верхнего регистра в нижний.
LTRIM() Удаляет начальные пробелы из символьной строки.
MEMOEDIT() Выводит на экран или редактирует символьные строки или memo-поля.
MEMOLINE() Выделяет строку текста из символьной строки или memo-поля.
MEMOREAD() Возвращает содержимое дискового файла как строку символов.
MEMOTRAN() Замещает символы "возврат каретки/перевод строки" символьной строкой.
MEMOWRIT() Записывает символьную строку или memo-поле в дисковый файл.
MLCOUNT() Подсчитывает количество строк в memo-поле или символьной строке.
MLCTOPOS() Возвращает позицию байта на основе номеров строки и колонки в
MLPOS() Определяет номер первого символа подстроки в символьной строке или
MPOSTOLC() Возвращает номера строки и колонки форматированного текста, основываясь
PAD() Дополняет CHARACTER, DATE и NUMERIC значения символом-заполнителем.
QOUT() Выводит список выражений на консоль.
RAT() Возвращает позицию последнего вхождения подстроки.
REPLICATE() Возвращает строку, повторенную заданное количество раз.
RIGHT() Возвращает подстроку, начиная с самого правого символа.
RTRIM() Удаляет конечные пробелы из символьной строки.
SEARCH() Поиск подстроки в строке по регулярному выражению.
SOUNDEX() Преобразует символьную строку в звуковую форму.
SPACE() Возвращает строку пробелов.
STR() Преобразует числовое выражение в символьную строку.
STR2VAR() Конвертировать uucode строку в исходные данные.
STRTRAN() Ищет и заменяет символы в символьной строке или memo-поле.
STUFF() Удаляет или вставляет символы в строке.
SUBSTR() Выделяет подстроку из символьной строки.
TRANSFORM() Преобразует заданное выражение в форматированную строку символов.
TRIM() Remove trailing spaces from a character string
TYPE() Определяет тип выражения.
UPPER() Преобразует алфавитные символы нижнего регистра в символы верхнего
VAL() Преобразует число в символьной форме в числовой тип.
VALTYPE() Определяет тип данных выражения.
VAR2STR() Конвертировать данные в uucode строку.
WEIGHTASC() Возвращает весовую характеристику символа.
WEIGHTTABLE() Возвращает весовую таблицу символов.

13.11.2.2. Function ALLTRIM()

 ALLTRIM(<символьное выражение>) --> строка символов

13.11.2.3. Function ASC()

 ASC(<символьное выражение>) --> значение кода ASCII

13.11.2.4. Function AT()

 AT(<подстрока поиска>,<строка>) --> номер позиции

13.11.2.6. Function CHR()

 CHR(<код ASCII>) --> символ

13.11.2.23. Function FT_PCHR()

 FT_PCHR( <cString> )  ->  <cPrinterFormat>

13.11.2.23.3. Description

This function is useful for allowing the user to enter printer control codes in text (enclosed in double quotes), numeric, hexadecimal, or Epson commands preceded by a slash and returns the printer control code equivalent.

NOTES"

- Combinations of text, numbers, hex, and commands must be separated by commas ("A",27,&1B,/RESET). - Text must be enclosed in double quotes ("x"). - Hexadecimal must be preceded by an ampersand (&1B). - Epson commands, listed below, must be preceded by a forward slash (/RESET).

Epson commands: (slash commands are specific to the Epson)

Job Control:

/RESET or /INIT Reset or initialize the printer /BELL or /BEEP Cause the printer's speaker to beep (not HS) /CAN Clear print buffers (not MX) /SLOW Set low speed mode (not CR, HS, MX) /FAST Cancel low speed mode (not CR, HS, MX) /ONE Select Unidirectional mode /TWO Select Directional mode /ON Activate printer /OFF Turn off printer

/FF or /EJECT Form Feed

Page Control:

/1/6 Set 6 lines per inch /1/8 Set 8 lines per inch /SKIP Set Skip perforation ON /SKIPOFF Set Skip perforation OFF

Font Selection and Manipulation:

/ITALIC Select italic char. set (only FX86, EX, LX, no LQ-1500, SX) /GRAPHIC Select graphic char. set (only FX86, EX, LX, no LQ-1500, SX) /ROMAN Choose Roman font /SANS Choose Sans Serif font /DRAFT Choose draft /NLQ Choose near letter quality /PICA Choose 10 chars per inch /ELITE Choose 12 chars per inch /COND or /SI Choose 15 chars per inch /EMPH Turn emphasize on /EMPHOFF Turn emphasize off /SPANISH Select spanish international char set /USA Select USA international char set

13.11.2.25. Function HARDCR()

 HARDCR(<строка>) --> преобразованная строка

13.11.2.28. Function ISALPHA()

 ISALPHA(<строка символов>) --> признак буквы

13.11.2.29. Function ISDIGIT()

 ISDIGIT(<символьная строка>) --> признак цифры

13.11.2.30. Function ISLOWER()

 ISLOWER(<символьная строка>) --> признак строчной буквы

13.11.2.31. Function ISUPPER()

 ISUPPER(<символьная строка>) --> признак заглавной буквы

13.11.2.32. Function LEFT()

 LEFT( <символьная строка>, <длина подстроки>) --> символьная подстрока

13.11.2.34. Function LOWER()

 LOWER(<символьная строка>) --> символьная строка

13.11.2.35. Function LTRIM()

 LTRIM(<символьная строка>) --> символьная строка

13.11.2.36. Function MEMOEDIT()

 MEMOEDIT( [<символьная строка>],
 [<верхняя строка>], [<левая колонка>],
 [<нижняя строка>], [<правая колонка>],
 [<режим>],
 [<имя функции пользователя>],
 [<длина строк>],
 [<гориз.табуляция>],
 [<строка буфера>],
 [<колонка буфера>],
 [<строка в окне>],
 [<колонка в окне>] ) --> текстовый буфер

13.11.2.36.1. Arguments

<символьная строка> - символьная строка или memo-поле, которые
  копируются в текстовый буфер MEMOEDIT(). Если аргумент не задан,
  текстовый буфер пуст.
  
<верхняя строка>, <левая колонка>, <нижняя строка>, <правая колонка>
  - координаты верхнего левого и правого нижнего углов окна. Номера
  строк изменяются от ноля до MAXROW(), а номера колонок - от ноля до
  MAXCOL(). Если эти аргументы не заданы, их значения по умолчанию
  принимаются - 0, 0, MAXROW(), MAXCOL().
  
<режим> - определяет, подлежит текстовый буфер редактированию или
  нет. Его значение - "истина" (.T.) означает, что редактирование
  текстового буфера разрешено, тогда как значение - "ложь" (.F.)
  позволяет пользователю только просмотр текстового буфера. Если
  аргумент не задан, его значение по умолчанию - "истина" (.T.).
  
<имя функции пользователя> - имя функции пользователя, которая
  вызывается, когда пользователь нажимает клавишу, не распознаваемую
  функцией MEMOEDIT() или когда буфер клавиатуры пуст. Аргумент
<имя функции> определяется как символьная величина без скобок и
  параметров. Задание в качестве этого параметра значения "ложь"
  (.F.) выводит заданную символьную строку на экран и прерывает
  выполнение MEMOEDIT(). В зависимости от того, определена или нет
  функция пользователя, поведение MEMOEDIT() различно. (Подробности
  смотри ниже).
  
<длина строк> - определяет длину строк, выводимых в окне MEMOEDIT().
  Если строка длиннее, чем значение аргумента <длина строк>, то остаток
  переносится на следующую строку в окне MEMOEDIT(). Если значение
  аргумента <длина строк> больше, чем число колонок в окне MEMOEDIT(),
  то текст в окне будет перемещаться по мере передвижения курсора за
  границы окна. Если аргумент <длина строк> не задан, то по умолчанию
  он принимает значение выражения (<левая колонка> - <правая колонка>).
  
<гориз.табуляция> - определяет размер шага табуляции, то есть
  количество колонок перемещения курсора при нажатии клавиши <Tab>.
  Если аргумент не задан, по умолчанию шаг табуляции - 4 пробела.
  
<строка буфера> и <колонка буфера> - определяют позицию в текстовом
  буфере, с которой начинается вывод на экран, при вызове MEMOEDIT().
  Значение аргумента <строка буфера> начинается с 1, а значение
  аргумента <колонка буфера> начинается с 0. Если аргументы не заданы,
  по умолчанию их значения принимаются равными 1 и 0 соответственно.
  
<строка в окне> и <колонка в окне> определяют начальную позицию
  курсора в окне MEMOEDIT(). Значения строки и колонки начинаются с
  ноля. Если аргументы не заданы, начальная позиция курсора в окне -
  нулевая строка и текущая колонка.

13.11.2.37. Function MEMOLINE()

 MEMOLINE(<символьная строка>,[<длина строки>],
 [<номер строки>], [<шаг табуляции>],
 [<переключатель переноса>]) --> символьная строка

13.11.2.37.2. Returns

MEMOLINE() возвращает подстроку текста с номером <номер строки>, длиной <длина строки> из заданной аргументом <символьная строка> строки. Если в заданной строке меньше символов, чем указано в аргументе <длина строки>, то результирующая строка дополняется пробелами. Если значение аргумента <номер строки> больше, чем количество строк в аргументе <символьная строка>, то MEMOLINE() возвращает пустую строку ("").

Если значение аргумента <переключатель переноса> равно "истина" (.T.) и конец строки попадает внутрь слова, то это слово переносится на следующую строку (ее начало). Если значение аргумента <переключатель переноса> имеет значение "ложь" (.F.), MEMOLINE() возвращает то количество символов, которое определено в аргументе <длина строки>. Следующая строка начинается с символа, следующего за символом "жесткий возврат каретки". Это означает, что промежуточные символы отбрасываются.

13.11.2.38. Function MEMOREAD()

 MEMOREAD(<имя файла>) --> строка символов

13.11.2.39. Function MEMOTRAN()

 MEMOTRAN( <символьная строка>,[<замещающий символ 1>],
 <замещающий символ 2>]) --> новая символьная строка.

13.11.2.39.3. Description

MEMOTRAN() - функция обработки memo-полей, которая изменяет длинные символьные строки или memo-поля, содержащие жесткий или мягкий возврат каретки/перевод строки, в форму, удобную для выдачи на дисплей. Эти две символьные комбинации используются функцией MEMOEDIT() как форматирующие признаки конца строки. Мягкий возврат каретки (CHR(141)) ставится в том случае, когда длина строки больше, чем размер окна MEMOEDIT(). Жесткий возврат каретки (CHR(13)) ставится при нажатии клавиши <Enter>.

Функция MEMOTRAN() бывает особенно полезна при выдаче memo-поля командой REPORT FORM, которая не делает переносов, когда встречается мягкий возврат каретки. MEMOTRAN() устраняет этот недостаток, замещая мягкий возврат каретки пробелом. Заметим, что если вы запускаете REPORT FORM, который использует MEMOTRAN(), и при этом MEMOTRAN() нигде больше в программе не встречается, то необходимо при помощи команды EXTERNAL объявить MEMOTRAN() как внешнюю функцию.

13.11.2.40. Function MEMOWRIT()

 MEMOWRIT()(<имя файла>,<символьная строка>) --> признак завершения

13.11.2.41. Function MLCOUNT()

 MLCOUNT(<символьная строка>, [<длина строки>],[<шаг табуляции>],
 [<переключатель переноса>]) --> кол-во строк

13.11.2.41.3. Description

MLCOUNT() - функция обработки memo-полей, используемая в сочетании с функцией MEMOLINE() для печати символьных строк и memo-полей на основании заданного количества символов в строке. Способ действия заключается в том, что сначала с помощью MLCOUNT() подсчитывают количество строк в memo-поле или символьной строке. Затем, используя MEMOLINE(), выделяют каждую строку, зациклив этот процесс до тех пор, пока не будут выбраны все строки.

Если значение аргумента <переключатель переноса> - "истина" (.T.) и конец строки попадает внутрь слова, то оно переносится на следующую строку.

Если значение аргумента <переключатель переноса> - "ложь" (.F.), то MLCOUNT() подсчитывает количество строк точно в соответствии со значением, определенным в аргументе <длина строки> для каждой строки. Следующая строка начинается с символа, следующего за ближайшим символом твердого или мягкого возврата каретки.

Символы, попавшие в промежуток, игнорируются.

13.11.2.42. Function MLCTOPOS()

 MLPOS(<символьная строка>,<длина строки>, <номер строки>, <номер колонки>,
 [<шаг табуляции>], [<перенос разрешен>]) --> номер позиции

13.11.2.43. Function MLPOS()

 MLPOS(<символьная строка>,<длина строки>,<номер строки>, [<шаг табуляции>],
 [<переключатель переноса>]) --> номер символа

13.11.2.44. Function MPOSTOLC()

 MPOSTOLC(<символьная строка>,<длина строки>,<номер позиции>, [<шаг табуляции>],
 [<перенос разрешен>]) --> массив

13.11.2.45. Function PAD()

 PADL( <выражение>,<длина>,[<символ-заполнитель>]) --> дополненная строка.
 PADC(<выражение>,<длина>,[<символ-заполнитель>]) --> дополненная строка
 PADR(<выражение>,<длина>,[<символ-заполнитель>]) --> дополненная строка

13.11.2.45.3. Description

PADL(), PADC(), PADR() - функции обработки символов, которые дополняют выражения типа CHARACTER, DATE и NUMERIC символом-заполнителем, создавая новую символьную строку заданной длины. Функция PADC() центрирует значение, заданное в аргументе <выражение>, дополняя его до заданной длины символом-заполнителем и с левой, и с правой стороны.

PADL() дополняет строку символом-заполнителем с левой стороны; PADR() дополняет строку символом-заполнителем с правой стороны.

Если длина результирующей строки, определенной аргументом <выражение>, превосходит значение аргумента <длина>, то все функции PAD() укорачивают возвращаемую символьную строку до значения аргумента <длина>.

Функции PADL(), PADC(), PADR() используются для выдачи на дисплей строк переменной длины внутри фиксированной области. Они могут быть использованы, например, для форматирования вывода информации командами последовательного вывода (??). Если есть уверенность, что предыдущий текст полностью переписан, эти функции можно использовать на дисплее внутри фиксированной области.

Функции PADL(), PADC(), PADR() являются обратными по отношению к функциям ALLTRIM(), LTRIM() и RTRIM(), которые удаляют пробелы в начале и конце символьной строки.

13.11.2.46. Function RAT()

 RAT(<подстрока поиска>, <строка>) --> номер позиции

13.11.2.47. Function REPLICATE()

 REPLICATE(<строка символов>, <к-во повторений>) --> новая строка символов

13.11.2.48. Function RIGHT()

 RIGHT(<строка символов>, <к-во символов>) -> подстрока

13.11.2.49. Function RTRIM()

 [R]TRIM(<символьная строка>) --> усеченная символьная строка

13.11.2.50. Function SEARCH()

 SEARCH(<sPattern>, <sString>, [@aReg], [<nFrom>], [<nRange>]) --> TRUE || FALSE

13.11.2.51. Function SOUNDEX()

 SOUNDEX(<строка символов>) --> строка в форме А999

13.11.2.52. Function SPACE()

 SPACE(<число пробелов>) --> строка пробелов

13.11.2.53. Function STR()

 STR(<число>, [<длина строки>], [<дробная часть>]) --> число в виде строки

13.11.2.55. Function STRTRAN()

 STRTRAN(<строка символов>, <замещаемая подстрока>,[<замещающая подстрока>], [<начало замены>],
 [<число замен>]) --> новая строка символов

13.11.2.56. Function STUFF()

 STUFF(<строка символов>, <начало замены>, <к-во удаляемых символов>, <вставляемая подстрока>)
 --> новая строка символов

13.11.2.56.3. Description

STUFF() является функцией обработки символьных строк, удаляющей символы, количество которых задано в аргументе <к-во удаляемых символов>, из аргумента <строка символов>, начиная с позиции, заданной аргументом <начало замены>. Затем она вставляет значение аргумента <вставляемая подстрока> в полученную строку, начиная с символа, номер которого определен в аргументе <начало замены>, и формирует возвращаемую строку. При этом STUFF() может выполнять шесть следующих операций:

Вставка. Если значение аргумента <к-во удаляемых символов> равно нулю, из аргумента <строка символов> символы не удаляются. Значение аргумента <вставляемая подстрока> вставляется, начиная с позиции, заданной аргументом <начало замены>, после чего строка возвращается. Например:

STUFF("My dog has fleas" , 12, 0, "no")

возвратит: "My dog has no fleas".

Замена. Если значение аргумента <вставляемая подстрока> имеет ту же длину, что и значение аргумента <к-во удаляемых символов>, значение аргумента <вставляемая строка> заменяет символы, начиная с позиции, заданной аргументом <начало замены>. Удаляется то же число символов, что и вставляется, и полученная строка имеет такую же длину, что и первоначальная. Например:

STUFF("My dog has fleas", 12, 5, "bones")

возвращает: "My dog has bones".

Удаление. Если значение аргумента <вставляемая подстрока> является строкой с нулевой длиной (""), из строки, заданной аргументом <строка символов>, удаляется число символов, заданное аргументом <к-во удаляемых символов>, и строка возвращается без каких-либо добавленных символов. Например:

STUFF("My dog has fleas", 1, 3, "")

возвратит: "dog has fleas".

Замена и вставка. Если значение аргумента <вставляемая подстрока> больше, чем значение аргумента <к-во удаляемых символов>, все символы, начиная с позиции, установленной аргументом <начало замены>, в соответствии со значением аргумента <к-во удаляемых символов>, удаляются, а затем значение аргумента <вставляемая подстрока> вставляется в строку. Поскольку вставляется больше символов, чем удаляется, полученная строка всегда длиннее первоначальной. Например:

STUFF("My dog has fleas", 8, 3, "does not have")

возвратит: "My dog does not have fleas".

Замена и удаление. Если длина аргумента <вставляемая подстрока> меньше, чем значение аргумента <к-во удаляемых символов>,лишние символы будут удалены, а затем произойдет вставка. Результирующая строка при этом будет короче исходной. Например:

STUFF ("My dog has fleas", 8, 3, "is")

возвратит: "My dog is fleas".

Замена и удаление оставшихся символов. Если значение аргумента <к-во удаляемых символов> больше или равно числу оставшихся символов, начиная с позиции ,заданной аргументом <начало замены>, аргумента <строка символов>, все эти оставшиеся символы удаляются перед вставкой значения аргумента <вставляемая подстрока>. Например:

STUFF("My dog has fleas", 8, 10, "is")

возвратит "My dog is".

13.11.2.57. Function SUBSTR()

 SUBSTR(<строка символов>, <начальная позиция>, [<к-во символов>]) --> подстрока

13.11.2.57.1. Arguments

<строка символов> - символьная строка, из которой должна быть
  выделена подстрока. Ее длина не должна превышать 65 535 (64К) байтов,
  что равняется максимальному размеру символьной строки в xClipper.
<начальная позиция> - начальная позиция в строке, заданной аргументом
<строка символов>. Если значение аргумента <начальная позиция>
  положительное, то отсчет ведется от крайнего слева символа в
  аргументе <строке символов>.
  Если же значение аргумента <начальная позиция> - отрицательное, то
  от крайнего справа символа.
<к-во символов> - является числом выделяемых символов. Если аргумент
  опущен, подстрока начинается со значения аргумента <начальная
  позиция> и продолжается до конца строки. Если значение аргумента
<к-во символов> больше числа символов, отсчитываемых от значения
  аргумента <начальная позиция> до конца строки, определенной
  аргументом <строка символов>, то излишек игнорируется.

13.11.2.58. Function TRIM()

 TRIM(<cString>) --> cTrimString

13.11.2.59. Function UPPER()

 UPPER(<символьная строка>) --> символьная строка в верхнем регистре

13.11.2.60. Function VAL()

 VAL (<число в символьной форме>) --> число

13.11.2.60.3. Description

VAL() - функция преобразования символов, которая преобразует строку символов, содержащую цифры, в числовое значение. Функция VAL() просматривает значение аргумента <число в символьной форме> до тех пор, пока не встретится вторая десятичная точка, нечисловой символ или конец выражения. Лидирующие пробелы игнорируются. Если SET FIXED установлено в режим ON, число возвращаемых функцией десятичных знаков определяется установкой команды SET DECIMALS, округляя полученное значение аргумента <число в символьной форме>, если в нем значащих цифр больше, чем определено командой SET DECIMALS. При значениях округляемой дробной части от 0 до 4 не происходит переноса 1 в старший разряд, а при значениях от 5 до 9 такой перенос происходит.

Если SET FIXED установлено в режим OFF, то VAL() возвращает число десятичных знаков такое же, как и в аргументе <число в символьной форме>.

VAL() - функция, обратная STR() и TRANSFORM(), которые преобразуют числовые значения в символьные строки.