Работа со строками
В данном разделе представлены функции 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;
}