Работа со строками
В данном разделе представлены функции 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;
}
Замена запрещенных символов в названии файла
STRING Forbidden(STRING <FileName>)
Функция заменяет в строке <FileName> символы \ / : ? " < > | *, запрещенные для названия файла, на символ _ (подчёркивание).