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

Материал из K3-Macro
Макро | Создание макропрограмм | Переменные и выражения | Вызов из ZIP | Типовые параметры | Создание геом. объектов | Буфер обмена | Сценарии | Параметрические библиотеки | Геометрические характеристики | Атрибуты | Структурные объекты | Текстовые файлы | Системные параметры | Работа с файлами | Редактирование объектов | Удаление объектов | Размеры | Штриховка | Объект «Текст» | Камера | Работа с видом | Наборы параметров | Запрос информации у пользователя | Фильтры | Слои | Графы | Универсальные плоские объекты | Функции работы с системой | Функции работы с объектами сцены | Работа с динамически подключаемыми библиотеками | Функции работы с массивами | Работа со строками | Математические функции | Работа с файлами DBF dBASE IV | Унифицированная работа с базами данных | Вычисление выражений | Присвоение имени объекту | Откатка и восстановление команд | Изменение режима трассировки макропрограмм | Вызов внешних приложений и задач | Проверка условия | Проверка типа переменной | Установкв статуса вывода сообщений | Выдача системного сообщения | Выбор объектов | Версия системы | Информация о системе | Проверка принадлежности к списку | Помещение строки в буфер команд | Получение метапути | Установка курсора ожидания | Мебельные команды и функции для макропрограммирования‎

В данном разделе представлены функции K3 для работы со строками.

Длина строки[править | править код]

INT Len(STRING <Str>)

Функция возвращает длину строки <Str> в символах

Пример:

=Len("Иванов");
6
=Len("");
0

Заглавные и строчные символы[править | править код]

STRING Upper(STRING <Str>)

Функция преобразует все буквы строки <Str> в заглавные.


STRING Lower(STRING <Str>)

Функция преобразует все буквы строки <Str> в строчные.


LOGICAL IsUpper(STRING <Str>)

Функция проверяет, является ли первый символ строки <Str> заглавной буквой.


LOGICAL IsLower(STRING <Str>)

Функция проверяет, является ли первый символ строки <Str> строчной буквой.

Пример:

=Upper("Иванов C.В.");
"ИВАНОВ С.В."
=Lower("Иванов C.В.");
"иванов с.в."
=IsUpper("Иванов C.В.");
1
=IsLower("Иванов C.В.");
0
=IsUpper("1");
0
=IsLower("1");
0

Обрезка пробелов[править | править код]

STRING LTrim(STRING <Str>)

Функция обрезает в строке пробелы слева


STRING RTrim(STRING <Str>)

Функция обрезает в строке пробелы справа


STRING Trim(STRING <Str>)

Функция обрезает пробелы и слева и справа

Пример:

=LTrim("  ABC  ");
"ABC  "
=RTrim("  ABC  ");
 "  ABC"
=Trim("  ABC  ");
"ABC"

Символы подряд[править | править код]

STRING Left(STRING <Str>, INT <N>)

Функция возвращает <N> первых символов строки <Str>


STRING Right(STRING <Str>, INT <N>)

Функция возвращает <N> последних символов строки <Str>


STRING Mid(STRING <Str>, INT <N>[, int <M>])

Функция возвращает подстроку в строке <Str> длиной <M>, начиная с позиции <N>. Если <M> опущено, возвращается один символ.

Пример:

=Left("ABCDEF",4);
"ABCD"
=Right("ABCDEF",3);
"DEF"
=Mid(“ABCDEF”,3);
“C”
=Mid(“ABCDEF”,3,2);
“CD”

Значение числа[править | править код]

DOUBLE Val(STRING <Str>)

Считается, что символы строки <Str> описывают число. Функция возвращает значение этого числа.

Пример:

=Val("132.75");
132.75

Преобразование выражения в строку[править | править код]

STRING Str(VARIANT <Expr>[, INT <Size>[, INT <Prec>]])

Функция преобразует выражение <Expr> в строку. Выражение может быть любого типа.

Для числа возвращает строку с символами числа. При этом могут быть использованы необязательные параметры:

<Size> — количество символов в выходной строке. Если их больше, чем требуется для вывода числа, выходная строка дополняется пробелами слева.

<Prec> — количество знаков после десятичной точки.

Если входной параметр является строкой — она же и возвращается.

Для многострочного текста возвращается первая строка.

Для объекта возвращается название типа объекта.

Пример:

=Str(pi());
"3.142"
=Str(pi(),10)
"     3.142"
=Str(pi(),10,5)
"   3.14159"
=Str(5)
"5"
=Str(5,10)
"5"
=Str(5,10,5)
"   5.00000"
=Str("ABC")
"ABC"
#p1 point 10, 20, 30;
=Str(p1)
"Точка"

Синтаксический разбор строк[править | править код]

INT SplitByDelim(String <Source>, string <Delim>, Varname array <Arr>[, logical <NotEmpty>])

Функция осуществляет синтаксический разбор строки <Source> на составляющие, разделенные разделителем, заданным строкой <Delim>. Результат заносится в массив <Arr>. Необязательный параметр <NotEmpty> определяет, следует ли (1) или не следует (0) заносить в массив пустые значения. По умолчанию пустые значения в массив не заносятся. Функция возвращает число заполненных элементов массива.

Пример:

defarray a[10];
s="1,2,ff,s=45,,e";
d=",";
=splitbydelim(s,d,a);
5
=a[1];
1
=a[4];
"s=45"
=a[5];
"e"
=splitbydelim(s,d,a,1);
6
=a[5];
""
=a[6];
"e"

Вхождение строки[править | править код]

INT InStr(INT <Start>, STRING <Source>, STRING <Search>, Logical <NoCase>)

Функция находит первое вхождение строки <Search> в строку <Source>, начиная с позиции <Start>. Если <NoCase> равно единице, то поиск осуществляется без учета регистра, иначе — с учетом регистра. Позиции в строке нумеруются начиная с единицы.

Функция возвращает номер позиции, с которой начинается вхождение, иначе функция возвращает ноль.

Форматирование строки[править | править код]

STRING TFormat(STRING <Format>, VARIANT <Par1>[, VARIANT <Par2>[, ...]])

Функция форматирует строку <Format> в соответствие с правилами форматирования строк и параметрами <Par1>, <Par2> и пр.

Допустимые типы форматирования:

для параметра типа число%d и %f
для параметра типа строка%s

Принцип форматирования такой же, как в языках С и пр.

error[2]=TFormat(_("Размер вставки (%d x %d) превышает габариты листа %d мм %d мм"),arr[2],arr[3],pGabX,pGabY);
error[3]=TFormat(_("указанные для материала %s"),matname);

Другой вариант использования

    i=0
    lb_vinst:
	if i<8
	{
        i=i+1;
        
        nullout=getvarinst(1,TFormat(_("closer_%d"),i),closer,0);
        
		nullout=getvarinst(1,TFormat(_("vstMater%d1"),i),vstMater1,0);
		nullout=getvarinst(1,TFormat(_("vstMater%d2"),i),vstMater2,0);
		nullout=getvarinst(1,TFormat(_("vstMater%d3"),i),vstMater3,0);
        nullout=getvarinst(1,TFormat(_("vstMater%d4"),i),vstMater4,0);
        nullout=getvarinst(1,TFormat(_("vstMater%d5"),i),vstMater5,0);
        nullout=getvarinst(1,TFormat(_("vstMater%d6"),i),vstMater6,0);
        .... // Какой-то код
        goto lb_vinst;
    }



Макро | Создание макропрограмм | Переменные и выражения | Вызов из ZIP | Типовые параметры | Создание геом. объектов | Буфер обмена | Сценарии | Параметрические библиотеки | Геометрические характеристики | Атрибуты | Структурные объекты | Текстовые файлы | Системные параметры | Работа с файлами | Редактирование объектов | Удаление объектов | Размеры | Штриховка | Объект «Текст» | Камера | Работа с видом | Наборы параметров | Запрос информации у пользователя | Фильтры | Слои | Графы | Универсальные плоские объекты | Функции работы с системой | Функции работы с объектами сцены | Работа с динамически подключаемыми библиотеками | Функции работы с массивами | Работа со строками | Математические функции | Работа с файлами DBF dBASE IV | Унифицированная работа с базами данных | Вычисление выражений | Присвоение имени объекту | Откатка и восстановление команд | Изменение режима трассировки макропрограмм | Вызов внешних приложений и задач | Проверка условия | Проверка типа переменной | Установкв статуса вывода сообщений | Выдача системного сообщения | Выбор объектов | Версия системы | Информация о системе | Проверка принадлежности к списку | Помещение строки в буфер команд | Получение метапути | Установка курсора ожидания | Мебельные команды и функции для макропрограммирования‎