Как найти строку в строке 1с8

Возвращает первое вхождение подстроки в исходную строку

Синтаксис

Функция Найти() имеет следующий синтаксис:

Число Найти(ИсходнаяСтрока, ПодстрокаПоиска)

А также альтернативный англоязычный синтаксис:

number Find(SourceString, Substring)

Параметры

Описание параметров функции Найти():

Имя параметра* Тип Описание
ИсходнаяСтрока Строка Исходная строка.
ПодстрокаПоиска Строка Искомая подстрока.
*Жирным шрифтом выделены обязательные параметры

Возвращаемое значение

Число
Позиция первого знака найденной подстроки.

Описание

Функция Найти() находит первое вхождение искомой подстроки в исходной строке и возвращает номер позиции. Нумерация символов в строке начинается с 1. Если строка не содержит указанной подстроки, то возвращается 0. Если параметр ПодстрокаПоиска — пустая строка, то возвращает 1. Если оба обязательных параметра — пустые строки, то возвращает 1.

Внимание! Сравнение выполняется с учетом регистра (см. пример)

Внимание!! Функция является устаревшей! Рекомендуется использовать функцию СтрНайти()

Доступность

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).

Пример использования

Пример кода с использованием функции Найти():

ИсходнаяСтрока = "abc";
Если Найти(ИсходнаяСтрока, "ab") > 0 Тогда
	Сообщить("Нашли ab");
КонецЕсли;
//обращайте внимание на регистр!
//следующая строка не будет найдена:
Если Найти(ИсходнаяСтрока, "Ab") = 0 Тогда
	Сообщить("Не нашли Ab");
КонецЕсли;
//чтобы найти, необходимо привести строку к одному регистру
Если Найти(Нрег(ИсходнаяСтрока), Нрег("Ab")) > 0 Тогда
	Сообщить("Нашли Ab");
КонецЕсли;

Читайте также:

  1. Новые строковые функции 1С 8.3
  2. Функция СтрНайти()

Поделиться страницей в соц.сетях

В предыдущей статье мы узнали, как работать со строками в 1С 8.3. В этой статье изучим самые часто применяемые функции для работы со строками 1С.

Статья о строках в 1С

Длина строки 1С

В платформе 1С имеется функция, которая вычисляет длину строки – СтрДлина. Эта функция имеет единственный параметр – строку, и возвращает количество символов в этой строке, т.е. её длину. Причем считаются все символы, в том числе пробелы.

Рассмотрим пример.

СтрокаПримера1= "результат    ";
СтрокаПримера2= "результат";

ДлинаСтроки1 = СтрДлина(СтрокаПримера1);
ДлинаСтроки2 = СтрДлина(СтрокаПримера2);

Сообщить("Длина строки:""" + СтрокаПримера1 + """ = " + ДлинаСтроки1);
Сообщить("Длина строки:""" + СтрокаПримера2 + """ = " + ДлинаСтроки2);

И результат.

Длина строки 1С

Регистр строки 1С

В 1С имеются функции для работы с регистрами строк.

НРег – переводит строку в нижний регистр

ВРег – переводит строку в верхний регистр

ТРег – переводит строку в титульный регистр (каждое слово начинается с заглавной буквы).

Рассмотрим пример.

СтрокаПримера= "пРивет оЛег!";

Сообщить(НРег(СтрокаПримера));
Сообщить(ВРег(СтрокаПримера));
Сообщить(ТРег(СтрокаПримера));

И результат.

Регистр строки 1С

Замечу, эти функции не изменяют строку в параметре, а создают новую строку в нужном регистре.

Убрать пробелы в строке 1С

Часто возникает, что в строке 1С в начале строки или в конце строки есть лишние пробелы, которые нужно убрать. Для  этих целей служат следующие функции.

СокрЛ  — убирает пробелы  слева строки.

СокрП — убирает пробелы справа строки.

СокрЛП – убирает пробелы справа и слева строки.

Рассмотрим пример (добавлю символы перед и после функциями, чтобы было понятно как они работают).

СтрокаПримера= "    результат выгрузки    ";

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

И результат.

Убрать пробелы в строке 1С

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

Сократить строку 1С

Если предыдущие функции сокращали только пробелы, то в платформе 1С имеется возможность сократить и саму строку на нужное количество символов. Или наоборот – оставить нужное количество символов. Для этих целей служат следующие функции.

Лев – оставляет нужное количество символов слева.  Имеет следующий синтаксис: Лев(<Cтрока>,<ЧислоСимволов>)

Прав – оставляет нужно количество символов справа. Имеет следующий синтаксис:  Лев(<Cтрока>,<ЧислоСимволов>)

Сред – оставляет нужное количество символов в строке. Имеет следующий синтаксис:  Лев(<Cтрока>,<НачальныйНомер>, <ЧислоСимволов>).

Поясним.

Функции Лев и Прав – создают новую строку, в которой оставлено слева и справа соответственно, то количество символов, которое указанно во втором параметре.

Функция Сред также создает новую строку, в которой оставлено то количество символов, которое указано в третьем параметре.  Но, если предыдущие функции оставлялись символы или с начала строки, или с конца, то эта функция оставляет символы с любого места строки. Для этого во втором параметре нужно указать номер символа, с которого будут оставлены остальные символы (включая символ, номер которого мы указали).

Рассмотрим пример.

СтрокаФИО = "Иванов Иван Иванович";

СтрокаО   = Прав(СтрокаФИО,8);
СтрокаФ   = Лев(СтрокаФИО,6);
СтрокаИ   = Сред(СтрокаФИО,8,4);

Сообщить(СтрокаФ);
Сообщить(СтрокаИ);
Сообщить(СтрокаО);

Сократить строку в 1С

По сути, эти функции позволяют сокращать как нужно строки, но работают наоборот – они оставляют то количество символов, которое необходимо.

Найти в строке 1С

Иногда нужно найти в строке или нужный символ, или нужную группу символов. Для этих целей применятся функция СтрНайти(). Эта функция имеет следующий синтаксис.

СтрНайти(<Cтрока>,<ПодстрокаПоиска>,<НаправлениеПоиска>,<НачальнаяПозиция>,<НомерВхождения>)

Данная функция возвращает позицию первого знака подстроки, которая была найдена. Если 0, то ни чего не найдено.

Разберем параметры:

Строка – строка, по которой осуществляется поиск;

ПодстрокаПоиска – подстрока (или символ), которая ищется в строке поиска;

НаправлениеПоиска – системное перечисление, которое задает в какую сторону осуществляется поиск. Имеет два значения: НаправлениеПоиска.Сначала, НаправлениеПоиска.Сконца. Необязательный параметр.

НачальнаяПозиция – номер символа, с которого начинается поиск. Должен быть в диапазоне от 1 до количества символов, иначе будет ошибка.  Необязательный параметр. Если он не задан и установлен параметр НаправлениеПоиска, то в случае поиска Сначала по умолчанию равен 1, а если поиск СКонца, то по умолчанию равен количеству символов в строке.

НомерВхождения – искомая подстрока (или символ) может несколько раз входить в исходную строку, этот параметр указывает,  какое вхождение нас интересует. По умолчанию равен 1.

Рассмотрим примеры.

СтрокаФИО = "Иванов Сидоров Иванов";
Сообщить(СтрокаФИО);

//ищем с настройками по умолчанию
НомерИванова = СтрНайти(СтрокаФИО,"Иванов");
Сообщить("Номер подстроки ""Иванов"" в строке " + НомерИванова);

//ищем с конца
НомерИванова = СтрНайти(СтрокаФИО,"Иванов",НаправлениеПоиска.СКонца);
Сообщить("Номер подстроки ""Иванов"" в строке " + НомерИванова);

//ищем с конца но начиная с 10 символа
НомерИванова = СтрНайти(СтрокаФИО,"Иванов",НаправлениеПоиска.СКонца,10);
Сообщить("Номер подстроки ""Иванов"" в строке " + НомерИванова);

//ищем с начала, но второе вхождение
НомерИванова = СтрНайти(СтрокаФИО,"Иванов",НаправлениеПоиска.СНачала,,2);
Сообщить("Номер подстроки ""Иванов"" в строке " + НомерИванова);

И результат работы функции

Найти в строке 1С

Т.е. когда мы ищем в строке «Иванов Сидоров Иванов» подстроку «Иванов», то при поиске без дополнительных параметров функция возвращает 1, это номер символа с которого начинается искомая подстрока. Если же мы ищем в направлении СКонца, то возвращается номер символа, с которого начинается второе вхождение подстроки в строку. В третьем случае мы искали в направлении СКонца, но указали номер символа, с которого нужно искать строку, поэтому функция вернула 1, поскольку при поиске начиная с 10 символа с конца строки, искомая подстрока находится только в начале строки. И в последнем примере, мы ищем подстроку с начала, но ищем второе вхождение этой подстроки.

Заменить в строке 1С

В платформе 1С 8.3. имеется метод, при помощи которого можно менять в строке определенные символы на другие символы.  

Этот метод СтрЗаменить, и он имеете следующий синтаксис: СтрЗаменить(<Строка>,<СтрокаПоиска>,<СтрокаЗамены>)

Данные метод возвращается строку, в которой будет выполнена замена или нет, в зависимости от того найдена строка поиска или нет.

Пример.

ФИОНеПравильное = "Иванов_Андрей_Игоревич";
Сообщить(ФИОНеПравильное);

ФИОВерное = СтрЗаменить(ФИОНеПравильное,"_"," ");
Сообщить(ФИОВерное);

ФИОБезОтчетства = СтрЗаменить(ФИОВерное," Игоревич","");
Сообщить(ФИОБезОтчетства); 

Результат:

Заменить в строке 1С

Как видите, при помощи этого метода можно не только менять символы, но и вырезать не нужные символы.

Функции для многострочных строк в 1С

Из предыдущей статьи вы знаете, что в 1С можно задать многострочную строку, делается это при помощи символа «|». Сейчас мы разберем несколько функций, которые могут пригодиться при работе с многострочной строкой.

СтрЧислоСтрок(<Строка>) – позволяет узнать, сколько в строке строк.

Пример.

СтрокаСПереносом = "Первая
                    |Вторая
                    |Третья";
КоличествоСтрок = СтрЧислоСтрок(СтрокаСПереносом);

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

Результат

Число строк в строке 1С

СтрПолучитьСтроку – позволяет получить строку из многострочной строки по номеру, имеете следующий синтаксис: СтрПолучитьСтроку(<Строка>, <НомерПолучаемойСтроки>). <НомерПолучаемойСтроки> — начинается с единицы.

Пример

СтрокаСПереносом = "Первая
                    |Вторая
                    |Третья";
ВтораяСтрока = СтрПолучитьСтроку(СтрокаСПереносом,2);

Сообщить(СтрокаСПереносом);
Сообщить("Вторая строка из предыдущей стороки с переносом:
        |" + ВтораяСтрока);

Результат

Заменить в строке 1С

В этой статье я разобрал основные функции, которые были в платформе 8.1, в платформе 8.2 и перешли в платформу 8.3 (кроме функции СтрНайти, но это улучшенная версия функция Найти, которая была в старых платформах) . В следующей статье рассмотрим функции работы со строками, которые появились в платформе 8.3:

Функции строк в 1С. Часть 2

Символы в 1С

Статьи о примитивных типах

Примитивный тип Строка

Примитивный тип Булево

Примитивный тип Число

Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

Программировать в 1С за 11 шагов

Книга написана понятным и простым языком — для новичка.

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»


Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Основы разработки в 1С такси
  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму
.

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

Строка — один из примитивных типов данных в системах 1С:Предприятие 8. Переменные с типом строка содержат текст.

Значения переменных типа строка заключаются в двойные кавычки. Несколько переменных данного типа можно складывать.

Пер1 = «Слово 1»;
Пер2 = «Слово 2»;
Пер3 = Пер1 + » « + Пер2;

В итоге Пер3 будет иметь значение «Слово 1 Слово 2″.

Кроме того, в системах 1С:Предприятие 8 предусмотрены функции для работы со строками. Рассмотрим основные:

ВвестиСтроку(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — функция предназначена для вывода диалогового окна, в котором пользователь может указать значение переменной типа Строка. Параметр <Строка> является обязательным и содержит имя переменной, в которую будет записана введенная строка. Параметр <Подсказка> необязательный — это заголовок диалогового окна. Параметр <Длина> необязательный, показывает максимальную длину вводимой строки. По умолчанию равен нулю, что означает неограниченную длину. Параметр <Многострочность> необязательный. Определяет режим ввода многострочного текста: Истина — ввод многострочного текста с разделителями строк; Ложь — ввод простой строки.

Строку можно ввести и, зная код символа в кодировке Unicode:

Символ(<КодСимвола>) — код вводится в виде числа.

Существует и обратная функция, позволяющая узнать код какого-либо символа.

КодСимвола(<Строка>, <НомерСимвола>) — возвращает номер указанного символа в кодировке Unicode в виде числа.

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

ВРег(<Строка>) — преобразует все символы строки в верхний регистр.

НРег(<Строка>) — преобразует все символы строки в нижний регистр.

ТРег(<Строка>) — преобразует все символы строки в титульный регистр. То есть первые буквы во всех словах преобразуется в верхний регистр, а остальные буквы — в нижний.

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

Найти(<Строка>, <ПодстрокаПоиска>) — находит номер символа вхождения подстроки поиска. Например:

Найти («Строка», «ока»); // 4

СтрНайти(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) — находит номер символа вхождения подстроки поиска, номер вхождения указывается в соответствующем параметре. При этом поиск начинается с символа, номер которого указан в параметре НачальнаяПозиция. Поиск возможен с начала или с конца строки.  Например:

Номер4Вхождения=СтрНайти («Обороноспособность», «о», НаправлениеПоиска.СНачала, 1, 4); // 7

СтрЗаменить(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) – находит в исходной строке все вхождения подстроки поиска и заменяет ее на подстроку замены.

СтрЗаменить («Строка», «ока», «»); // Стр

ПустаяСтрока(<Строка>) – проверяет строку на наличие значащих символов. Если значащих символов нет, или вообще никаких символов нет, то возвращается значение Истина. В противном случае — Ложь.

СтрЧислоВхождений(<Строка>, <ПодстрокаПоиска>) – вычисляет число вхождений подстроки поиска в исходной строке.

СтрЧислоВхождений («учиться, учиться и еще раз учиться», «учиться», «»); // 3

СтрШаблон(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — подставляет параметры в строку по номеру. Строка должна содержать маркеры подстановки вида: «%1..%N». Нумерация маркеров начинается с 1. Если значение параметра Неопределено, подставляется пустая строка.

СтрШаблон («Параметр 1 = %1, Параметр 2 = %2», «1», «2»); // Параметр 1= 1, Параметр 2 = 2

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

Лев(<Строка>, <ЧислоСимволов>) – возвращает первые сначала символы строки.

Прав(<Строка>, <ЧислоСимволов>) – возвращает последние символы строки.

Сред(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) – возвращает строку длиной в <ЧислоСимволов>, начиная с символа <НачальныйНомер>.

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

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

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

СтрПолучитьСтроку(<Строка>, <НомерСтроки>) – получает строку многострочной строки по номеру.

Прочие функции:

СтрДлина(<Строка>) – возвращает количество символов в строке.

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

СтрСравнить(<Строка1>, <Строка2>) – сравнивает две строки без учета регистра. Функция работает аналогично объекту СравнениеЗначений. Возвращает:

  • 1 — если первая строка больше второй
  • -1 — если вторая строка больше первой
  • 0 — если строки равны

СтрСравнить(«Первая строка», «Вторая строка»); // 1

Строка — это один из примитивных типов данных существующих 1С и работать с ним приходится практически постоянно. Следовательно необходимо иметь представление о том, какие функции для работы со строками существуют, как и когда они используются, а также, что получается в результате. Этим и займемся.

Содержание

  1. Функции для работы со строками в 1С 8.2 и 8.3
  2. Строка
  3. СтрДлина
  4. СокрЛП, СокрЛ, СокрП
  5. Лев, Прав, Сред
  6. ВРег, НРег, ТРег
  7. Найти
  8. СтрЧислоВхождений
  9. СтрЗаменить
  10. ПустаяСтрока
  11. СтрЧислоСтрок
  12. СтрПолучитьСтроку
  13. Символ, КодСимвола
  14. Символы
  15. ЗначениеВСтрокуВнутр, ЗначениеИзСтрокиВнутр
  16. ВвестиСтроку
  17. Функции для работы со строками начиная с версии 8.3.6.1977
  18. СтрШаблон
  19. СтрСравнить
  20. СтрНайти
  21. СтрНачинаетсяС, СтрЗаканчиваетсяНа
  22. СтрРазделить, СтрСоединить
  23. Типовые задачи при работе со строками в 1С 8.2 и 8.3
  24. Сложение строк
  25. Преобразования строка-число, число-строка
  26. Кавычки в строке
  27. Символ переноса строки
  28. Сравнение строк
  29. Разделение строки по разделителю

Функции для работы со строками в 1С 8.2 и 8.3

Строка

Функция Строка(x) возвращает текстовое представление переданного ей значения “x”.

&НаКлиенте

Процедура ТестСтрока(Команда)

Сообщить(Строка(35)); //35

Сообщить(Строка(Истина)); //Да

Сообщить(Строка(‘20170425151515’)); //25.04.2017 15:15:15

КонецПроцедуры

СтрДлина

Функция СтрДлина(x) вычисляет количество символов в строке “x”, учитывая пробелы и ничего не значащие символы.

&НаКлиенте

Процедура ТестСтрока(Команда)

Сообщить(СтрДлина(«тестовая строка»)); //15

КонецПроцедуры

СокрЛП, СокрЛ, СокрП

Функции СокрЛП(x), СокрЛ(x) и СокрП(x) убирают пробелы и ничего не значащие символы у переданной строки “x” с обеих сторон, слева и справа соответственно.

&НаКлиенте

Процедура ТестСтрока(Команда)

Сообщить(СокрЛ(» тест «)); //»тест «

Сообщить(СокрП(» тест «)); //» тест»

Сообщить(СокрЛП(» тест «)); //»тест»

КонецПроцедуры

Лев, Прав, Сред

Функции Лев(x, y) и Прав(x, y) возвращают количество символов “y” с левого или правого края переданной им строки “x”. А функция Сред(x, y, z) возвращает количество символов “z” из указанного места “y” переданной строки “x”.

&НаКлиенте

Процедура ТестСтрока(Команда)

Сообщить(Лев(«тестовая строка», 5)); //»тесто»

Сообщить(Прав(«тестовая строка», 5)); //»трока»

Сообщить(Сред(«тестовая строка», 5)); //»овая строка»

Сообщить(Сред(«тестовая строка», 5, 5)); //»овая»

КонецПроцедуры

ВРег, НРег, ТРег

Функция ВРег(x) преобразует все символы переданной строки “x” в верхний регистр, НРег(x) — в нижний регистр, ТРег(x) — первую букву каждого слова преобразует в верхний регистр, а все остальные  нижний.

&НаКлиенте

Процедура ТестСтрока(Команда)

Сообщить(ВРег(«Верхний регистр»)); //ВЕРХНИЙ РЕГИСТР

Сообщить(НРег(«Нижний регистр»)); //нижний регистр

Сообщить(ТРег(«Каждое слово с заглавной буквы»)); //Каждое Слово С Заглавное Буквы

КонецПроцедуры

Найти

Функция Найти(x, y) возвращает номер первого символа первого вхождения подстроки “y” в строку “x”, если, конечно, такое вхождение найдено (при этом нумерация начинается с 1). Если же вхождений не найдено, то функция возвращает 0.

&НаКлиенте

Процедура ТестСтрока(Команда)

Сообщить(Найти(«тестовая строка», «с»)); //3

Сообщить(Найти(«тестовая строка», «м»)); //0

КонецПроцедуры

СтрЧислоВхождений

Функция СтрЧислоВхождений(x, y) возвращает количество вхождений подстроки “y” в строку “x”.

&НаКлиенте

Процедура ТестСтрока(Команда)

Сообщить(СтрЧислоВхождений(«тестовая строка», «т»)); //3

КонецПроцедуры

СтрЗаменить

Функция СтрЗаменить(x, y, z) позволяет в указанной строке “x” заменить все вхождения одной подстроки “y” на другую “z”, результатом выполнения функции будет строка с проведенными заменами.

&НаКлиенте

Процедура ТестСтрока(Команда)

Сообщить(СтрЗаменить(«тест1,тест2,тест3,тест4», «,», » «)); //тест1 тест2 тест3 тест4

КонецПроцедуры

ПустаяСтрока

Функция ПустаяСтрока(x) сравнивает переданную ей строку “x” с пустой и возвращает результат этого сравнения — Истина или Ложь, при этом строка состоящая из пробелов и/или ничего не значащих символов приравнивается к пустой.

&НаКлиенте

Процедура ТестСтрока(Команда)

Сообщить(ПустаяСтрока(» «)); //Да

Сообщить(ПустаяСтрока(«тестовая строка»)); //Нет

КонецПроцедуры

СтрЧислоСтрок

Функция СтрЧислоСтрок(x) возвращает количество строк в многострочном тексте “x”.

&НаКлиенте

Процедура ТестСтрока(Команда)

МногострочныйТекст = СтрЗаменить(«тест1,тест2,тест3,тест4», «,», Символы.ПС); //тест1 тест2 тест3 тест4

Сообщить(СтрЧислоСтрок(МногострочныйТекст)); //4

КонецПроцедуры

СтрПолучитьСтроку

Функция СтрПолучитьСтроку(x, y) возвращает строку с номером “y” из многострочного текста “x”.

&НаКлиенте

Процедура ТестСтрока(Команда)

МногострочныйТекст = СтрЗаменить(«тест1,тест2,тест3,тест4», «,», Символы.ПС); //тест1 тест2 тест3 тест4

Сообщить(СтрПолучитьСтроку(МногострочныйТекст, 2)); //тест2

КонецПроцедуры

Символ, КодСимвола

Функция Символ(x) получает код символа “x” и возвращает строку содержащую соответствующий символ (в кодировке Unicode). Функция КодСимвола(x) делает обратное действие — получает символ “x” и возвращает его код в кодировке Unicode. Таблицу символов Unicode можно найти, например, тут.

&НаКлиенте

Процедура ТестСтрока(Команда)

Сообщить(Символ(1046)); //Ж

Сообщить(КодСимвола(«Ж»)); //1046

КонецПроцедуры

Символы

Это не функция, а набор наиболее часто используемых специальных символов, состоит из:

  • ВК (CR) — возврат каретки;
  • ВТаб (VTab) — вертикальная табуляция;
  • НПП (NBSp) — неразрывный пробел;
  • ПС (LF) — перевод строки;
  • ПФ (FF) — перевод формы;
  • Таб (Tab) — символ горизонтальной табуляции.

ЗначениеВСтрокуВнутр, ЗначениеИзСтрокиВнутр

Функция ЗначениеВСтрокуВнутр(x) возвращает системное строковое представление значения “x”. Функция ЗначениеИзСтрокиВнутр(x) проделывает обратную операцию и возвращает значение, полученное из строкового системного представления “x”. Обе эти функции используются для сохранения функциональной совместимости с версией 7.7. Использование для каких-либо других целей не рекомендуется. В новых версиях платформы данные функции не работают (хотя их описание присутствует в справке).

ВвестиСтроку

Функция ВвестиСтроку(x, y, z, w) вызывает диалог для ввода строки, введенная строка записывается в переменную “x”, кроме этого можно указать подсказку “y”, длину вводимой строки “z”, отметку многострочности вводимого текста “w”. Функция возвращает Истина — если ввод был произведен, Ложь — если пользователь отказался от ввода. Выглядит это окно примерно так:

&НаКлиенте

Процедура ТестСтрока(Команда)

НовСтр = «»;

ВвестиСтроку(НовСтр, «Введите имя», 50, Ложь);

КонецПроцедуры

Окно ввода строки

Окно ввода строки

Функции для работы со строками начиная с версии 8.3.6.1977

В обновлении 8.3.6.1977 набор функций для работы со строками был серьезно расширен.

СтрШаблон

Функция СтрШаблон(x, y1-y10) является аналогом функции printf из языка C++ и многих других. В исходной строке “x” можно использовать маркеры подстановки “%1, %2..%10” (не более 10), которые впоследствии заменяются на соответствующие “y1, y2..y10”. Функция возвращает результат этой замены. Если количество маркеров замены не соответствует количеству параметров “y1, y2..y10”, то генерируется ошибка.

&НаКлиенте

Процедура ТестСтрока(Команда)

Сообщить(СтрШаблон(«%1,%2,%3,%4,%5,%6,%7,%8,%9,%10», 101, 102, 103, 104, 105, 106, 107, 108, 109, 110)); //101,102,103,104,105,106,107,108,109,110

КонецПроцедуры

СтрСравнить

Функция СтрСравнить(x, y) выполняет лексикографическое сравнение переданных ей строк “x” и “y” и возвращает одно из трех значений:

  • 0 — строки равны;
  • 1 — строка “x” больше строки “y”;
  • -1 — строка “x” меньше строки “y”.

&НаКлиенте

Процедура ТестСтрока(Команда)

Сообщить(СтрСравнить(«ааа», «ааб»)); //-1

КонецПроцедуры

СтрНайти

Функция СтрНайти(x, y, z, w, v) призвана полность заменить функцию Найти(), так как она ее полность повторяет (строка “x” и подстрока поиска “y”), а также позволяет указать необязательные дополнительные параметры поиска: направление поиска “z”, начальную позицию “w” и номер вхождения “v”.

&НаКлиенте

Процедура ТестСтрока(Команда)

Сообщить(СтрНайти(«тестовая строка», «т», НаправлениеПоиска.СНачала)); //1

Сообщить(СтрНайти(«тестовая строка», «т», НаправлениеПоиска.СНачала, 2)); //4

Сообщить(СтрНайти(«тестовая строка», «т», НаправлениеПоиска.СНачала,, 3)); //11

Сообщить(СтрНайти(«тестовая строка», «т», НаправлениеПоиска.СКонца)); //11

КонецПроцедуры

СтрНачинаетсяС, СтрЗаканчиваетсяНа

Функции СтрНачинаетсяС(x, y) и СтрЗаканчиваетсяНа(x, y) проверяют начинается/заканчиватся ли строка “x” с/на подстроку “y” и возвращают результат — Истина или Ложь.

&НаКлиенте

Процедура ТестСтрока(Команда)

Сообщить(СтрНачинаетсяС(«тестовая строка», «т»)); //Да

Сообщить(СтрНачинаетсяС(«тестовая строка», «п»)); //Нет

Сообщить(СтрЗаканчиваетсяНа(«тестовая строка», «а»)); //Да

Сообщить(СтрЗаканчиваетсяНа(«тестовая строка», «б»)); //Нет

КонецПроцедуры

СтрРазделить, СтрСоединить

Функция СтрРазделить(x, y, z) разделяет строку “x” по разделителю “y” и возвращает получившийся массив строк, параметр “z” позволяет указать, нужно ли включать в этот массив пустые строки. Функция СтрСоединить(x, y) выполняет обратную задачу — склеивает массив строк “x” в одну строку через разделитель “y” (если этот разделитель указан).

&НаКлиенте

Процедура ТестСтрока(Команда)

МассивСтрок = СтрРазделить(«тест1,тест2,тест3,тест4», «,», Ложь);

Сообщить(МассивСтрок[0]); //тест1

Сообщить(СтрСоединить(МассивСтрок, «+»)); //тест1+тест2+тест3+тест4

КонецПроцедуры

Типовые задачи при работе со строками в 1С 8.2 и 8.3

Сложение строк

В языке 1С работает сложение как непосредственно строк, так и сложение переменных:

&НаКлиенте

Процедура ТестСтрока(Команда)

Мама = «Мама «;

Мыла = «мыла «;

Раму = «раму»;

Сообщить(«Мама «+»мыла «+»раму»); //Мама мыла раму

Сообщить(Мама+Мыла+Раму); //Мама мыла раму

Сообщить(«Мама «+Мыла+»раму»); //Мама мыла раму

КонецПроцедуры

Преобразования строка-число, число-строка

Помимо специальных функций:

  • Строка(x) — подробно описана выше;
  • Число(x) — подробно  описана в статье о числах в 1С.

Кроме этого прекрасно работает приведение типов «на лету», тут все завит от того, что с чем складывает (какой тип данных идет первым), в случае если приведение типов невозможно, будет вызвана исключительная ситуация и показана соответствующая ошибка:

&НаКлиенте

Процедура ТестСтрока(Команда)

Сообщить(6+»6″); //12 — Число

Сообщить(«6″+6); //66 — Строка

Сообщить(«»+6+»6»); //66 — Строка

КонецПроцедуры

Кавычки в строке

Одинарные кавычки не нуждаются в каком-либо экранировании, а для использования внутри строки двойных кавычек каждую двойную кавычку нужно продублировать:

&НаКлиенте

Процедура ТестСтрока(Команда)

Сообщить(«‘Мама’ «»мыла»» ‘раму'»); //’Мама’ «мыла» ‘раму’

Сообщить(«»»»); //»

КонецПроцедуры

Символ переноса строки

Символ переноса строки (и все остальные специальные символы) ведут себя точно также как и простые строки, т.е. могут складываться с другими строками. При сложении символа переноса строк с другими строками получается много строчный текст, для работы с которым существуют специальные функции описанные выше:

&НаКлиенте

Процедура ТестСтрока(Команда)

МногострочныйТекст = «тест1″+Символы.ПС+»тест2″+Символы.ПС+»тест3″+Символы.ПС+»тест4»;

КонецПроцедуры

Сравнение строк

При сравнении строк будет разумно (в зависимости от задачи, конечно) обрезать все не значащие символы и привести строки к одному регистру:

&НаКлиенте

Процедура ТестСтрока(Команда)

Строка1 = » тЕсТ «;

Строка2 = » ТЕсТ «;

Если НРег(СокрЛП(Строка1)) = НРег(СокрЛП(Строка2)) Тогда

Сообщить(«Строки равны»);

КонецЕсли;

КонецПроцедуры

Разделение строки по разделителю

Для того чтобы разбить строку по разделителю в языке 1С существует два способа, старый:

&НаКлиенте

Процедура ТестСтрока(Команда)

СтрокаСРазделителями = «тест1,тест2,тест3,тест4»;

МногострочныйТекст = СтрЗаменить(СтрокаСРазделителями, «,», Символы.ПС);

Для Счетчик = 1 По СтрЧислоСтрок(МногострочныйТекст) Цикл

Сообщить(СтрПолучитьСтроку(МногострочныйТекст,Счетчик));

КонецЦикла;

КонецПроцедуры

Начиная с версии 8.3.6.1977 в языке 1С существует специальная функция позволяющая разложить строку по разделителю в массив строк:

&НаКлиенте

Процедура ТестСтрока(Команда)

МассивСтрок = СтрРазделить(СтрокаСРазделителями, «,»);

Для Каждого ТекСтрока Из МассивСтрок Цикл

Сообщить(ТекСтрока);

КонецЦикла;

КонецПроцедуры

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Загрузка…

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.

&НаКлиенте
Процедура ВыполнитьКод(Команда)
 
    /// Как найти длину строки в 1с 8.3, 8.2
 
    Сообщить(СтрДлина("123456789")); // 9
 
    /// Как взять часть строки в 1с 8.3, 8.2
 
    // как взять N символов слева
    Строка = "Иван Грозный";
    Сообщить(Лев(Строка, 4)); // Иван
 
    // как взять N символов справа
    Строка = "Иван Грозный";
    Сообщить(Прав(Строка, 7)); // Грозный
 
    // как взять строку из середины
    Строка = "Мама, папа, я.";
    // возьмём начиная с 7 индекса 4 символа
    Сообщить(Сред(Строка, 7, 4)); // папа
 
    /// Как найти подстроку в 1с 8.3, 8.2
 
    Строка = "Привет, мир!";
    Индекс = СтрНайти(Строка, "Привет"); // 1, строки индексируются с единицы
 
    /// Как узнать число вхождений подстроки в строку в 1с 8.3, 8.2
 
    Сообщить(СтрЧислоВхождений("я, я и ещё раз я.", "я")); // 3
 
    /// Как заменить подстроку в строке в 1с 8.3, 8.2
 
    Сообщить(СтрЗаменить("Идёт сильный дождь.", "дождь", "снег"));
 
    /// Как проверить на пустую строку в 1с 8.3, 8.2
 
    Если ПустаяСтрока("         ") Тогда
        Сообщить("Строка пустая, то есть не содержит значащих символов.");
    КонецЕсли;
 
    /// Как удалить незначащие символы из строки в 1с 8.3, 8.2
 
    // слева
    Сообщить(СокрЛ("   из лесу ёлочку    ")); // "из лесу ёлочку    "
    // справа
    Сообщить(СокрП("   из лесу ёлочку    ")); // "   из лесу ёлочку"
    // с двух сторон
    Сообщить(СокрЛП("   из лесу ёлочку    ")); // "из лесу ёлочку"
 
    /// Как вставить в строку перенос в 1с 8.3, 8.2
 
    Строка =
        "Первая строка" + Символы.ПС +
        "Вторая строка" + Символы.ПС +
        "Третья строка";
 
    /// Как работать с многострочными строками (нумерация с 
    /// единицы) в 1с 8.3, 8.2
 
    Сообщить(СтрЧислоСтрок(Строка)); // 3
    Сообщить(СтрПолучитьСтроку(Строка, 2)); // "Вторая строка"
 
    /// Верхний, нижний и титульный регистры в 1с 8.3, 8.2
 
    Сообщить(ВРег("россия - родина моя!")); // РОССИЯ - РОДИНА МОЯ!
    Сообщить(НРег("МИР, ТРУД, МАЙ!")); // мир, труд, май
    Сообщить(ТРег("мама мыла раму")); // Мама Мыла Раму
 
    /// Как получить код символа строки в 1с 8.3, 8.2
 
    // код отдельного символа:
    //   туда
    Сообщить(КодСимвола("A")); // 65
    //   и обратно
    Сообщить(Символ(65)); // "A"
 
    // код третьего символа в строке
    Сообщить(КодСимвола("ABC", 3)); //67
 
    // код первого символа в строке
    КодПервогоСимволаФамилии = КодСимвола("Грозный");
    Сообщить(КодПервогоСимволаФамилии); // 1043, потому что Unicode.
 
    /// Как преобразовать строку в число в 1с 8.3, 8.2
 
    Сообщить(Число("125.36")); // 125,36
    Сообщить(Число("125,36")); // 125,36
 
    /// Как преобразовать число в строку в 1с 8.3, 8.2
 
    Сообщить(25 + "10"); // 35
    // если же нужно сложить число и строку как строки
    Сообщить(Строка(25) + "10"); // 2510
 
    /// Как разбить строку с разделителями в 1с 8.3, 8.2
 
    Разделитель = ",";
    Строки = СтрЗаменить("январь, февраль, март", Разделитель, Символы.ПС);
    Для Индекс = 1 По СтрЧислоСтрок(Строки) Цикл
        Сообщить(СтрПолучитьСтроку(Строки, Индекс));
    КонецЦикла;
 
КонецПроцедуры
 
&НаСервереБезКонтекста
Процедура ВыполнитьКодНаСервере()
 
    /// Как сериализовать значение в строку в 1с 8.3, 8.2
 
    Массив = Новый Массив(3);
    Массив[0] = 1;
    Массив[1] = "Земля";
    Массив[2] = 3.14;
 
    Стр = ЗначениеВСтрокуВнутр(Массив);
    Сообщить(Стр);
 
    //{"#",51e7a0d2-530b-11d4-b98a-008048da3034,
    //  {3,
    //      {"N",1},
    //      {"S","Земля"},
    //      {"N",3.14}
    //  }
    //}
 
    /// Как десериализовать значение из строки в 1с 8.3, 8.2
 
    МассивКопия = ЗначениеИзСтрокиВнутр(Стр);
    Элемент = МассивКопия[1];
    Сообщить(Элемент); // Земля
 
КонецПроцедуры
 
/// Скачать и выполнить эти примеры на компьютере

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как найти томагавк в гта онлайн
  • Как найти наушники айрподс дома
  • Как составить положение об охране труда на предприятии
  • Замания в европолисе как найти
  • Как исправить ошибку radeon settings version and driver version do not match

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии