Строки в 1С 8.3 во встроенном языке 1с представляют собой значения примитивного типа Строка. Значения данного типа содержат строку в формате Unicode произвольной длины. Переменные строкового типа являются набором символов заключенных в кавычки.
Пример 1. Создадим строковую переменную с текстом.
СтроковаяПеременная = "Привет мир!";
Функции работы со строками в 1с 8.3
В данном разделе будут приведены основные функции, позволяющие изменять строки в 1с, либо анализировать информацию содержащуюся в них.
СтрДлина
СтрДлина(<Строка>). Возвращает количество символов содержащихся в строке, переданной в параметре.
Пример 2. Посчитаем количество символов в строке «Привет мир!».
Строка = "Привет мир!";
КоличествоСимволов = СтрДлина(Строка);
Сообщить(КоличествоСимволов);
Итогом выполнения данного кода будет вывод на экран количества символов строки: 11.
СокрЛ
СокрЛ(<Строка>). Отсекает незначащие символы, стоящие слева от первого значащего символа в строке.
Незначащие символы:
- пробел;
- неразрывный пробел;
- табуляция;
- возврат каретки;
- перевод строки;
- перевод формы (страницы).
Пример 3. Убрать все пробелы с левой стороны строки » мир!» и присоединить к ней строку «Привет «.
Строка = СокрЛ(" мир!");
Строка = "Привет "+Строка;
Сообщить(Строка);
Итогом выполнения данного кода будет вывод на экран строки «Привет мир!».
СокрП
СокрП(<Строка>). Отсекает незначащие символы, стоящие справа от первого значащего символа в строке.
Пример 4. Сформировать из строк «Привет » и » мир!» фразу «Привет мир!»
Строка = СокрП("Привет ") + " " + СокрЛ(" мир!");
Сообщить(Строка);
СокрЛП
СокрЛП(<Строка>). Отсекает незначащие символы, стоящие справа от первого значащего символа в строке, также отсекает незначащие символы, стоящие слева от первого значащего символа в строке. Данная функция используется чаще предыдущих двух, так как она более универсальна.
Пример 5. Убрать незначащие символы стоящие слева и справа в наименовании контрагента.
Контрагент = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", "0777121211");
КонтрагентОбъект = Контрагент.ПолучитьОбъект();
КонтрагентОбъект.Наименование = СокрЛП(КонтрагентОбъект.Наименование);
КонтрагентОбъект.Записать();
Лев
Лев(<Строка>, <ЧислоСимволов>). Получает первые символы строки, число символов указывается в параметре ЧислоСимволов. Если указанное количество символов превышает длину строки, то возвращается вся строка.
Пример 6. Пусть в структуре Сотрудник содержаться имя, фамилия и отчество сотрудника. Получить строку с фамилией и инициалами.
ИнициалИмени = Лев(Сотрудник.Имя, 1);
ИнициалОтчества = Лев(Сотрудник.Отчество, 1);
ПолноеИмя = Сотрудник.Фамилия + " "
+ ИнициалИмени + "."
+ ИнициалОтчества + ".";
Прав
Прав(<Строка>, <ЧислоСимволов>). Получает последние символы строки, число символов указывается в параметре ЧислоСимволов. Если указанное количество символов превышает длину строки, то возвращается вся строка.
Пример 7. Пусть в конце строковой переменной записана дата в формате «ггггммдд», получить строку с датой и преобразовать ее к типу Дата.
Строка = "Текущая дата: 20170910";
СтрокаДата = Прав(Строка, 8);
Дата = Дата(СтрокаДата);
Сред
Сред(<Строка>, <НачальныйНомер>, <ЧислоСимволов>). Получает подстроку из строки переданной в параметре Строка, начиная с символа номер которого указан в параметре НачальныйНомер и длиной переданной в параметр ЧислоСимволов. Нумерация символов в строке начинается с 1. Если в параметре НачальныйНомер указано значение, меньшее или равное нулю, то параметр принимает значение 1. Если параметр ЧислоСимволов не указан, то выбираются символы до конца строки.
Пример 8. Пусть в строковой переменной начиная с девятой позиции содержится код региона, следует получить его и записать в отдельную строку.
Строка = "Регион: 99 г. Москва";
Регион = Сред(Строка, 9, 2);
СтрНайти
СтрНайти(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>). Осуществляет поиск указанной подстроки в строке, возвращает номер позиции первого символа найденной подстроки. Рассмотрим параметры данной функции:
- Строка. Исходная строка;
- ПодстрокаПоиска. Искомая подстрока;
- НаправлениеПоиска. Указывает направление поиска подстроки в строке. Может принимать значения:
- НаправлениеПоиска.СНачала;
- НаправлениеПоиска.СКонца;
- НачальнаяПозиция. Указывает позицию в строке, с которой начинается поиск;
- НомерВхождения. Указывает номер вхождения искомой подстроки в исходной строке.
Пример 9. В строке «Привет мир!» определить позицию последнего вхождения символа «и».
НомерПозиции = СтрНайти("Привет мир!", "и", НаправлениеПоиска.СКонца);
Сообщить(НомерПозиции);
Итогом выполнения данного кода будет вывод на экран номера последнего вхождения символа «и»: 9.
ВРег
ВРег(<Строка>). Преобразует все символы указанной строки в 1с 8 к верхнему регистру.
Пример 10. Преобразовать строку «привет мир!» к верхнему регистру.
СтрокаВрег = ВРег("привет мир!");
Сообщить(СтрокаВрег);
Итогом выполнения данного кода будет вывод на экран строки «ПРИВЕТ МИР!»
НРег
НРег(<Строка>). Преобразует все символы указанной строки в 1с 8 к нижнему регистру.
Пример 11. Преобразовать строку «ПРИВЕТ МИР!» к нижнему регистру.
СтрокаНрег = НРег("ПРИВЕТ МИР!");
Сообщить(СтрокаВрег);
Итогом выполнения данного кода будет вывод на экран строки «привет мир!»
ТРег
ТРег(<Строка>). Преобразует строку следующим образом: первый символ каждого слова переводится в верхний регистр, остальные символы слова переводятся в нижний регистр.
Пример 12. Сделать заглавными первые буквы слов в строке «привет мир!».
СтрокаТрег = ТРег("привет мир!");
Сообщить(СтрокаТрег);
Итогом выполнения данного кода будет вывод на экран строки «Привет Мир!»
Символ
Символ(<КодСимвола>). Получает символ по его коду в кодировке Unicod.
Пример 13. Добавим слева и справа в строку «Привет Мир!» символ ★
СимволЗвезда = Символ("9733");
СтрокаСоЗвездами = СимволЗвезда + "Привет Мир!" + СимволЗвезда;
Сообщить(СтрокаСоЗвездами);
Итогом выполнения данного кода будет вывод на экран строки «★Привет Мир!★»
КодСимвола
КодСимвола(<Строка>, <НомерСимвола>). Получает код символа в кодировке Unicode из строки указанной в первом параметре, расположенного в позиции указанной во втором параметре.
Пример 14. Узнать код последнего символа в строке «Привет Мир!».
Строка = "Привет Мир!";
КодСимвола = КодСимвола(Строка, СтрДлина(Строка));
Сообщить(КодСимвола);
Итогом выполнения данного кода будет вывод на экран кода символа «!» — 33.
ПустаяСтрока
ПустаяСтрока(<Строка>). Проверяет состоит ли строка только из незначащих символов, то есть является ли она пустой.
Пример 15. Проверить является ли пустой строка состоящая из трех пробелов.
Пустая = ПустаяСтрока(" ");
Сообщить(Пустая);
Итогом выполнения данного кода будет вывод на экран слова «Да» (строковое выражение логического значения Истина).
СтрЗаменить
СтрЗаменить(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>). Находит в исходной строке все вхождения подстроки поиска и заменяет ее на подстроку замены.
Пример 16. В строке «Привет Мир!» заменить слово «Мир» на слово «Друзья».
Строка = СтрЗаменить("Привет Мир!", "Мир", "Друзья");
Сообщить(Строка);
Итогом выполнения данного кода будет вывод на экран строки «Привет Друзья!»
СтрЧислоСтрок
СтрЧислоСтрок(<Строка>). Позволяет посчитать количество строк в многострочной строке. Для перехода на новую строку в 1с 8 используется символ ПС (символ перевода строки).
Пример 17. Определить число строк в тексте:
«Первая строка
Вторая строка
Третья строка»
Число = СтрЧислоСтрок("Первая строка
|Вторая строка
|Третья строка");
Сообщить(Число);
Итогом выполнения данного кода будет вывод на экран количества строк в тексте: 3
СтрПолучитьСтроку
СтрПолучитьСтроку(<Строка>, <НомерСтроки>). Получает строку в многострочной строке по ее номеру. Нумерация строк начинается с 1.
Пример 18. Получить последнюю строку в тексте:
«Первая строка
Вторая строка
Третья строка»
Текст = "Первая строка
|Вторая строка
|Третья строка";
ПоследняяСтрока = СтрПолучитьСтроку(Текст, СтрЧислоСтрок(Текст));
Сообщить(ПоследняяСтрока);
Итогом выполнения данного кода будет вывод на экран строки «Третья строка».
СтрЧислоВхождений
СтрЧислоВхождений(<Строка>, <ПодстрокаПоиска>). Возвращает число вхождений указанной подстроки в строку. Функция чувствительна к регистру.
Пример 19. Определить сколько раз входит в строку «Строки в 1с 8.3 и 8.2» буква «с», вне зависимости от ее регистра.
Строка = "Строки в 1с 8.3 и 8.2";
ЧислоВхождений = СтрЧислоВхождений(Врег(Строка), "С");
Сообщить(ЧислоВхождений);
Итогом выполнения данного кода будет вывод на экран числа вхождений: 2.
СтрНачинаетсяС
СтрНачинаетсяС(<Строка>, <СтрокаПоиска>). Проверяет начинается ли строка переданная в первом параметре, со строки во втором параметре.
Пример 20. Определить начинается ли ИНН выбранного контрагента с цифры 1. Пусть в переменной Контрагент хранится ссылка на элемент справочника Контрагенты.
ИНН = Контрагент.ИНН;
НачинаетсяСЕдиницы = СтрНачинаетсяС(ИНН, "1");
Если НачинаетсяСЕдиницы Тогда
//Ваш код
КонецЕсли;
СтрЗаканчиваетсяНа
СтрЗаканчиваетсяНа(<Строка>, <СтрокаПоиска>). Проверяет заканчивается ли строка переданная в первом параметре, на строку во втором параметре.
Пример 21. Определить заканчивается ли ИНН выбранного контрагента на цифру 2. Пусть в переменной Контрагент хранится ссылка на элемент справочника Контрагенты.
ИНН = Контрагент.ИНН;
ЗаканчиваетсяНаДвойку = СтрЗаканчиваетсяНа(ИНН, "2");
Если ЗаканчиваетсяНаДвойку Тогда
//Ваш код
КонецЕсли;
СтрРазделить
СтрРазделить(<Строка>, <Разделитель>, <ВключатьПустые>). Разделяет строку на части по указанным символам-разделителям и записывает полученные строки в массив. В первом параметре хранится исходная строка, во втором строка содержащая разделитель, в третьем указывается, нужно ли записывать в массив пустые строки (по умолчанию Истина).
Пример 22. Пусть у нас есть строка содержащая числа разделенные символом «;», получить из строки массив чисел.
Строка = "1; 2; 3";
Массив = СтрРазделить(Строка, ";");
Для Сч = 0 По Массив.Количество() - 1 Цикл
Попытка
Массив[Сч] = Число(СокрЛП(Массив[Сч]));
Исключение
Массив[Сч] = 0;
КонецПопытки;
КонецЦикла;
В результате выполнения будет получен массив с числами от 1 до 3-х.
СтрСоединить
СтрСоединить(<Строки>, <Разделитель>). Преобразует массив строк из первого параметра в строку, содержащую все элементы массива через разделитель, указанный во втором параметре.
Пример 23. Используя массив чисел из предыдущего примера, получить исходную строку.
Для Сч = 0 По Массив.Количество() - 1 Цикл
Массив[Сч] = Строка(Массив[Сч]);
КонецЦикла;
Строка = СтрСоединить(Массив, "; ");
Также прочитать про строковые функции появившиеся в 8.3 можно на официальном сайте 1С: v8.1c.ru
Прочитайте статью про работу с числами: Число в 1С 8.3 — функции работы с числами
Добавить комментарий