Функции для работы со строками

Работа со строками

Так как данные в Caché хранятся как строки, то работа со строками имеет большое значение. COS не является языком строгой типизации, в отличие от большинства известных языков программирования. Все значения данных интерпретируются с соответствии с контекстом, в котором они используются. При этом имена переменных чувствительны к регистру букв, в то время как команды нет. Примеры интерпретации данных в соответствии с контекстом приведены ниже.

SAMPLES>set x = 4 write x + 2

SAMPLES>set x = "5" write x * 2

SAMPLES>set x = "fred" write x + 3

SAMPLES>set x = "32hut" write x / 4

SAMPLES>write +x

SAMPLES>write 5 + 2, ?10, "5" + "2" , ?20, "5 + 2"

7 7 5 + 2

SAMPLES>

 

Сохранение строк на диске

Для сохранения строки на диске перед именем переменной нужно поставить ^ (циркумфлекс). В этом случае, если удалить все переменные с помощью команды kill, глобальные переменные сохраняются.

Пример:

SAMPLES>set x = 4

SAMPLES>set ^x = "Глобальная переменная"

SAMPLES>kill

SAMPLES>write

SAMPLES>write ^x

Глобальная переменная

Для удаления глобальной переменной введите: SAMPLES > kill ^x.

 

Функции для работы со строками

Со строками работают следующие основные функции:

$Length

Синтаксис функции: $Length (<строка>,[<разделитель>]) – возвращает длину строки или число подстрок строки, если указан второй параметр.

Функция $Length вычисляет длину строки символов, то есть число символов в этой строке. Длина пустой строки равна 0. Задание строки символов в качестве второго аргумента возвращает увеличенное на единицу количество ее вхождений в первый аргумент. Таким образом подсчитывается число полей, которые разделены этой подстрокой символов. Если второй аргумент – пустая строка, то $Length возвращает значение 0.

>Write $Length("ABCD")

>Write $Length("")

>Write $Length ("AB/CD/EF", "/")

$Extract

Синтаксис функции: $Extract (<строка>,<выр2>,<выр3>) – возвращает подстроку из строки, начало и конец которой определяются вторым и третьим аргументом.

Если третий аргумент не задан, то возвращается один символ, положение которого в строке задано вторым аргументом. Если второй аргумент также не задан, функция $Extract возвращает первый символ строки символов.

Если второй аргумент больше, чем третий или больше, чем длина строки, заданной в первом аргументе, $Extract возвращает пустую строку. Если второй аргумент меньше или равен 1, то функция $Extract возвращает все символы от начала строки до позиции, заданной третьим аргументом. Если он меньше единицы, возвращается пустая строка.

Если третий аргумент больше, чем длина строки символов, $Extract возвращает все символы до конца строки.

>Write $Extract ("ABC") // выводит «A»

>Write $Extract("XYZ", $L("XYZ")) // выводит «Z»

>Write $Extract("AABB", 2, 3) // выводит «AB»

>Write $Extract( "лето", 3, 255) // выводит «тo»

>Write $Extract ("abc", 5) // выводит пустую строку

 

$Find

Синтаксис функции: $Find (<строка>,<подстрока>,<позиция>) – ищет подстроку в строке и возвращает позицию символа следующего за подстрокой, третий аргумент задает начальную позицию для поиска.

$Find выполняет поиск заданной в виде второго аргумента подстроки в первом аргументе. Поиск начинается с позиции, которая была задана третьим аргументом. Если третий аргумент отсутствует, то поиск ведется с начала первого аргумента.

$Find возвращает позицию первого символа после найденной подстроки. Если искомая строка не найдена, значение функции $Find равно 0. Если в качестве второго аргумента передается пустая строка символов, значение функции всегда равняется третьему аргументу, или если тот не был задан, единице.

>Write $ Find("ABC", "A") // выводит 2

>Write $Find("XYZ", "T") // выводит 0

>Write $Find("ABABAB", "AB", 3) // выводит

 

$Piece

Синтаксис функции: $Piece (<строка>,<разделитель>,<начало>,<конец>) – рассматривает строку как набор подстрок, разделенных разделителями, возвращает нужную подстроку, находящуюся между начальным и конечным разделителями. Второй аргумент задает номер начального разделителя, третий аргумент – задает номер конечного разделителя.

$Piece рассматривает передаваемую в виде первого аргумента строку символов как последовательность полей, отделенных друг от друга передаваемой вторым аргументом строкой символов – разделителем. Она возвращает в форме с двумя аргументами первое поле, в форме с тремя аргументами заданное третьим аргументом поле и в форме с четырьмя аргументами поля в области от аргумента три до аргумента четыре.

Если разделитель в строке символов отсутствует, $Piece возвращает всю строку символов для случая, если третий аргумент равен 1 или отсутствует вообще. В противном случае возвращается пустая строка. Пустая строка в качестве разделителя всегда ведет к результату в виде пустой строки.

Если третий аргумент меньше единицы или четвертый аргумент превышает число полей в первом аргументе, осуществляется выделение с первого и соответственно до последнего поля. Если четвертый аргумент меньше третьего либо меньше 1, или же третий аргумент превосходит число полей, то результатом функции $Piece будет пустая строка.

>Set v = "ABC/XYZ/123"

>Write $Piece(v, "/")

ABC

>Write $Piece(v, "/", 2)

XYZ

>Write $Piece(v, "/", 2, 3)

XYZ/123

>Set $P(v, "/", 2) = "***" Write v

ABC/***/123

 

$Justify

Синтаксис функции : $Justify(<строка или числ выражение>,<длина>, <позиция точки>) – выравнивание числа, которое может быть задано в виде строки заданной длины, с указанием нужного количества цифр после точки.

Функция $Justify осуществляет выравнивание по правому краю поля данных путем добавление пробельных символов в начало строки, а также простое форматирование чисел.

Второй параметр определяет длину вывода. Если входные данные превосходят заданную длину вывода, они возвращаются без изменений. Третий аргумент – если таковой имеется – задает форматирование числовых элементов данных и вызывает числовую интерпретацию первого аргумента.

Задается число позиций после десятичной точки, которое должно получиться путем округления или добавления нулей.

Если третий аргумент равен нулю, то не выводятся ни позиции после запятой, ни десятичная точка.

Значения больше -1, но меньше 1 представляются с помощью 0 перед десятичной точкой.

>Write $Justify(12, 3)

>Write $Justify("Text", 10)

Text

>Write $Justify(12, 3, 2)

12.00

>Write $Justify(3.14, 1, 0)

>Write $Justify(0.414, 6, 3)

0.414

 








Дата добавления: 2016-01-20; просмотров: 589;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.009 сек.