Строки в 1С 8.3 — строковые функции

Строки в 1С 8.3 во встроенном языке 1с представляют собой значения примитивного типа Строка. Значения данного типа содержат строку в формате Unicode произвольной длины. Переменные строкового типа являются набором символов заключенных в кавычки.

Пример 1. Создадим строковую переменную с текстом.

СтроковаяПеременная = "Привет мир!";

Функции работы со строками в 1с 8.3

В данном разделе будут приведены основные функции, позволяющие изменять строки в 1с, либо анализировать информацию содержащуюся в них.

СтрДлина

СтрДлина(<Строка>). Возвращает количество символов содержащихся в строке, переданной в параметре.

Пример 2. Посчитаем количество символов в строке «Привет мир!».

Строка = "Привет мир!";	
КоличествоСимволов = СтрДлина(Строка);
	
Сообщить(КоличествоСимволов);

Итогом выполнения данного кода будет вывод на экран количества символов строки: 11.

СокрЛ

СокрЛ(<Строка>). Отсекает незначащие символы, стоящие слева от первого значащего символа в строке.
Незначащие символы:

  • пробел;
  • неразрывный пробел;
  • табуляция;
  • возврат каретки;
  • перевод строки;
  • перевод формы (страницы).

Пример 3. Убрать все пробелы с левой стороны строки »      мир!» и присоединить к ней строку «Привет «.

Строка = СокрЛ("      мир!");	
Строка = "Привет "+Строка;
Сообщить(Строка);

Итогом выполнения данного кода будет вывод на экран строки «Привет мир!».

СокрП

СокрП(<Строка>). Отсекает незначащие символы, стоящие справа от первого значащего символа в строке.

Пример 4. Сформировать из строк «Привет            » и »             мир!» фразу «Привет мир!»

Строка = СокрП("Привет          ") + " " + СокрЛ("      мир!");
Сообщить(Строка);

СокрЛП

СокрЛП(<Строка>). Отсекает незначащие символы, стоящие справа от первого значащего символа в строке, также отсекает незначащие символы, стоящие слева от первого значащего символа в строке. Данная функция используется чаще предыдущих двух, так как она более универсальна.

Пример 5. Убрать незначащие символы стоящие слева и справа в наименовании контрагента.

Строки в 1С. До использования функции СокрЛП

Контрагент = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", "0777121211");
КонтрагентОбъект = Контрагент.ПолучитьОбъект();
	
КонтрагентОбъект.Наименование = СокрЛП(КонтрагентОбъект.Наименование);
	
КонтрагентОбъект.Записать();

Строки в 1С. После использования функции СокрЛП

Лев

Лев(<Строка>, <ЧислоСимволов>). Получает первые символы строки, число символов указывается в параметре ЧислоСимволов. Если указанное количество символов превышает длину строки, то возвращается вся строка.

Пример 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 — функции работы с числами

Добавить комментарий

Ваш адрес email не будет опубликован.