1с как в строке найти нужное слово

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

Синтаксис

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

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

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

number StrFind(SourceString, Substring, [Direction], [StartPos], [MatchNumber])

Параметры

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

Имя параметра* Тип Описание
ИсходнаяСтрока  Строка Исходная строка.
ПодстрокаПоиска Строка Искомая подстрока.
НаправлениеПоиска НаправлениеПоиска Указывает направление поиска подстроки в строке. Возможные значения:

СКонца Задает направление поиска от конца строки к ее началу
СНачала Задает направление поиска от начала строки в концу

Значение по умолчанию: НаправлениеПоиска.СНачала

НачальнаяПозиция Число Указывает позицию в строке, с которой начинается поиск. Если параметр не задан и задано направление НаправлениеПоиска.СНачала, то значение по умолчанию равно 1.
НомерВхождения Число Указывает порядковый номер вхождения подстроки в исходной строке. Значение по умолчанию: 1 (ищется первое вхождение)
*Жирным шрифтом выделены обязательные параметры

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

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

Описание

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

Внимание! Поиск выполняется с учетом регистра, аналогично устаревшей функции Найти().

Внимание!! В том случае, если Вы используете релиз платформы 1С:Предприятие 8.3.5 и ниже (либо аналогичный режим совместимости конфигурации), функция работать не будет. При попытке сохранить модуль вы получите ошибку: «Функция СтрНайти() не определена!»

Доступность

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

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

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

ИсходнаяСтрока = "Заголовок: прочие товары"; 
Рез = СтрНайти(ИсходнаяСтрока, "заголовок:"); 
//Рез = 0, т.к. поиск регистрозависимый

//регистронезависимый поиск: 
Рез = СтрНайти(нрег(ИсходнаяСтрока), "заголовок:"); 
//Рез = 1

//поиск значений, расположенных в конце строк стал удобнее
ИсходнаяСтрока = "Значение: Стул комнатный Значение: 1";
Рез = СтрНайти(нрег(ИсходнаяСтрока), "значение:", НаправлениеПоиска.СКонца);

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

Ошибка «Функция СтрНайти() не определена»

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

Метки: Метки 1C:Предприятие 8.3.6+

В предыдущей статье мы узнали, как работать со строками в 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.
Если строка не содержит указанных символов, возвращается 0.

Синтаксис

Найти(<ИсходнаяСтрока>, <ИскомыеСимволы>)

Параметры

<ИсходнаяСтрока> — исходная строка [строка]
<ИскомыеСимволы> — искомые символы [строка]

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

позиция первого символа или 0 [Число]

Прочее

Доступность (для версии 8.2):
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.

Пример

Текст = "Иванов Иван Иванович";
Если Найти(Текст, "Иван") > 0 Тогда
    Сообщить(Найти(Текст, "Иван"));
    // результат: 1
КонецЕсли;

// ИЛИ так

Текст = "Петров Иван Иванович";
Результат = Найти(Текст, "Иван");
Если Результат > 0 Тогда
    Сообщить(Результат);
    // результат: 8
КонецЕсли;

Строка — один из примитивных типов данных в системах 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С 8.3 для начинающих программистов: работа со строками в 1С

Автор уроков и преподаватель школы: Владимир Милькин

Оглавление

  • Откуда в программе появляются строки
  • Из чего состоит строка
  • Что представляет из себя символ
  • Объединение строк
  • Поиск в строке
  • Замена в строке
  • Верхний и нижний регистры
  • Подведём итоги
  • Пройдите тест
  • Домашнее задание

Друзья, сегодня будет интереснейший урок. Мы научимся выполнять операции со строками (мы проходили их здесь).

Наверное, не найдётся ни одного языка программирования, который не давал бы возможностей для обработки строк. Настолько это фундаментальный и необходимый тип данных.

И 1с в этом смысле не исключение. Я, как обычно, прошу вас повторять и проверять у себя весь код, который мы будем писать в этом уроке.

Откуда в программе появляются строки

Сам программист может закодировать определенное значение строки прямо в коде, используя двойные кавычки …

ИмяПеременной = "Привет, Мир!";

… и далее использовать его по своему усмотрению:

// Выводим значение строки пользователю в отдельном диалоге.
ОткрытьЗначение(ИмяПеременной);

Бывает и так, что значение строки должен ввести сам пользователь. Это делается при помощи команды ВвестиСтроку:

// Определим переменную с пустым значением строки.
ИмяПеременной = "";
 
// Попросим пользователя ввести новое значение строки.
ВвестиСтроку(ИмяПеременной);
 
// Сообщим пользователю его же строку.
ОткрытьЗначение(ИмяПеременной);

Из чего состоит строка

Любая строка состоит из символов.

К примеру, строка «привет» состоит из символов ‘п’, ‘р’, ‘и’, ‘в’, ‘е’, ‘т’.

К этим символам можно обращаться по их порядковому номеру. При этом нумерация символов в строке (в отличие от коллекций) начинается не с 0, а с 1.

Узнать общее количество символов в строке можно при помощи функции СтрДлина.  Она принимает на вход строку и возвращает нам число символов в этой строке.

Таким образом, цикл обхода строки будет таким:

ИмяПеременной = "привет";
 
Для НомерСимвола = 1 По СтрДлина(ИмяПеременной) Цикл
    Сообщить(НомерСимвола);
КонецЦикла;

Если мы запустим эту программу на компьютере, то увидим такой результат:

Мы научились получать номера символов в строке, но как получать сами символы?

За получение нужного символа (или даже группы символов) из строки отвечает функция Сред (сокращение от слов «средина», «средний»).

Она принимает три параметра:

  • Саму строку.
  • Номер символа в строке, который нужно получить.
  • Количество символов, которое нужно получить.

В нашем случае мы будем получать по одному символу, поэтому третий параметр у нас всегда будет равен 1.

Итак, перепишем наш код вот так:

ИмяПеременной = "привет";
 
Для НомерСимвола = 1 По СтрДлина(ИмяПеременной) Цикл
    Сообщить(Сред(ИмяПеременной, НомерСимвола, 1));
КонецЦикла;

Теперь вывод будет совсем другим:

Что представляет из себя символ

Мне иногда кажется, что всё в этом мире есть числа … :) И символы строки, кстати, не исключение.

И это на самом деле так, ведь каждому значению символа соответствует определенное число, его код.

Зачем вообще может понадобиться переводить символ в числовой код и обратно? Например, если мы захотим написать программу для шифрования и дешифрования текстов. А мы захотим и сделаем это в следующем модуле школы.

За перевод символа в числовой код отвечает функция КодСимвола. Она принимает строку и порядковый номер символа в ней, а возвращает числовой код этого символа.

Давайте выведем числовой код каждого символа нашей строки:

ИмяПеременной = "привет";
 
Для НомерСимвола = 1 По СтрДлина(ИмяПеременной) Цикл
    Сообщить(КодСимвола(ИмяПеременной, НомерСимвола));
КонецЦикла;

Запустим эту программу, вывод будет таким:

1087
1088
1080
1074
1077
1090

Получается, что, к примеру, символу ‘п’ соответствует числовой код 1087? Да, это действительно так. Проверим это.

Для этого я сообщу вам способ для обратного перевода: из числового кода в символ. За такой перевод отвечает функция Символ. Она принимает на вход числовой код, а возвращает символ.

Сообщить(Символ(1087)); // выведет п

Объединение строк

Давайте представим, что у нас есть две вот такие строки …

Строка1 = "Привет";
Строка2 = "Вова";

… и мы хотим сложить (ещё говорят «склеить», «объединить») эти строки вместе, чтобы за значением первой строки сразу следовало значение второй.

Это делается при помощи оператора плюс (+), вот так:

Строка1 = "Привет";
Строка2 = "Вова"; // используйте ваше имя, Вова - моё имя ;)
Строка3 = Строка1 + Строка2;

Выведем эту строку пользователю:

Сообщить(Строка3); // ПриветВова

Выглядит не очень, правда?

Давайте усложним задачу — требуется объединить эти строки, но между ними вставить пробел, а в конце добавить восклицательный знак.

Строка1 = "Привет";
Строка2 = "Вова";
Строка3 = Строка1 + " " + Строка2 + "!";
Сообщить(Строка3); // Привет Вова!

Вот так гораздо лучше! :)

Поиск в строке

Давайте рассмотрим такую интересную задачу. Попросим пользователя ввести любой текст, но чтобы в нём встречалось (или нет) слово «счастье».

А в ответ мы будем говорить пользователю в какой позиции в строке находится это слово.

К примеру, если пользователь введёт строку «высыпаться по утрам — счастье», то программа должна ему сказать, что слово «счастье» есть в строке и оно находится в позиции 23.

Будем писать программу по частям.

Сначала напишем ввод строки от пользователя:

Текст = "";
ВвестиСтроку(Текст);

За поиск в строке отвечает функция СтрНайти.

На вход она принимает 2 параметра (на самом деле параметров больше, но мы рассмотрим только первые два):

  • Строку, в которой надо искать.
  • Часть строки (её ещё называют «подстрока»), которую надо найти.

Функция возвращает 0, если вхождение не найдено и позицию в строке, если вхождение найдено. Функция ищет только первое вхождение подстроки в строку.

С учётом этого продолжим написание программы вот так:

ПозицияВхождения = СтрНайти(Текст, "счастье");
Если ПозицияВхождения = 0 Тогда
    ОткрытьЗначение("Слово счастье в строке не найдено!");
Иначе
    ОткрытьЗначение("Слово счастье находится в " + ПозицияВхождения + " позиции!");
КонецЕсли;

Замена в строке

А давайте подшутим над пользователем? :)

Пусть он введёт строку со словом «счастье», а мы выведем его же строку, в которой заменим слово «счастье», например, на «удовольствие».

За замену одной части строки на другую отвечает функция СтрЗаменить.

На вход она принимает 3 параметра:

  • Строку, в которой нужно сделать замену.
  • Подстроку, которую надо найти и заменить.
  • Подстроку, на которую нужно заменить.

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

Итак, поехали:

Текст = "";
ВвестиСтроку(Текст);
НовыйТекст = СтрЗаменить(Текст, "счастье", "удовольствие");
ОткрытьЗначение(НовыйТекст);

Верхний и нижний регистры

А вы заметили, что один и тот же символ может иметь два варианта, например: ‘п’ и ‘П’. Первый вариант называется «нижний регистр», а второй — «верхний регистр».

И для компьютера это разные буквы. Мы можем легко в этом убедиться, если выведем числовые коды этих букв:

Сообщить(КодСимвола("п", 1)); // 1087
Сообщить(КодСимвола("П", 1)); // 1055

Именно поэтому для компьютера, к примеру, строка «привет» будет не равна строке «Привет»:

// Кстати, сравнение строк на равенство делается
// при помощи знака равно (точно также как с числами).
Сообщить("привет" = "Привет"); // нет

Компьютер при сравнении строк сравнивает числовой код каждого символа одной строки с соответствующим ему (по порядку) числовым кодом символа другой строки. И если есть хотя бы одно неравенство — строки считаются различными.

Но у нас есть замечательная возможность менять регистр строк: из верхнего в нижний и наоборот. За это отвечают функции НРег (сокращение от «нижний регистр») и ВРег (сокращение от «верхний регистр»).

Текст = "оТпУсК";
Сообщить(НРег(Текст)); // отпуск
Сообщить(ВРег(Текст)); // ОТПУСК

Когда это может быть полезно? Вспомните задачу, когда мы заменяли слово «счастье» на «удовольствие».

Функция СтрЗаменить (как и Найти) ищет подстроку с учётом регистра. То есть если пользователь введет вместо «счастье», например, «Счастье», то программа не найдёт этого вхождения.

И чтобы поиск и замена не зависели от того в каком регистре ввёл строку пользователь, мы напишем вот так:

Текст = "";
ВвестиСтроку(Текст);
НовыйТекст = СтрЗаменить(НРег(Текст), "счастье", "удовольствие");
ОткрытьЗначение(НовыйТекст);

Теперь, даже если пользователь введёт «Любимая работа — это СЧАСТЬЕ!» программа сможет найти слово «счастье» и вывести пользователю «любимая работа — это удовольствие!».

Подведём итоги

Мы рассмотрели основные операции над строками, но на самом деле их больше.

Некоторые из них вы можете изучить вместе с примерами в справочнике по языку 1с.

Но наиболее полный перечень представлен в синтакс-помощнике:

Пройдите тест

Введите от пользователя строку. Посчитайте сколько раз в этой строке встречается пробел и скажите об этом пользователю.

Понравилась статья? Поделить с друзьями:
  • Как исправить ошибку не удалось проверить имя пользователя в майнкрафт атернос
  • Как составить альтернативный вопрос на английском языке в прошедшем времени
  • Как найти молекулярную массу соляной кислоты
  • Как найти частоту сопряжения
  • При рассылке или при рассылки как правильно составить