Найти самое длинное слово в строке 1с

Обновлено: 04.07.2024

Войдите как ученик, чтобы получить доступ к материалам школы

Упражнения по внутреннему языку программирования 1С 8.3: палиндром и обработка текста

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

Упражнение №7б. Пользователь вводит слово. Программа должна проверить является ли слово палиндромом и вывести результат.

О том, что такое палиндром читайте здесь.

Проще говоря, палиндром - это слово перевёртыш.

Примеры: шалаш, казак, потоп.

Ввести строку от пользователя можно так:

О том как работать со строками в языке 1С 8 читайте здесь.

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

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

Сравним первую букву в слове с последней. Если не равны - слово не палиндром.

Далее сравним вторую букву с предпоследней. Если не равны - слово не палиндром.

Далее сравним третью букву с пред предпоследней . и так далее, пока не дойдём до середины слова. Если до середины дошли и все буквы при сравнении совпадали - перед нами палиндром.

Эталонное решение. Сначала пишем код сами, проверяем на компьютере (как и все примеры программ из уроков), только потом сверяемся

Войдите на сайт как ученик

Упражнение №8. Пользователь вводит текст. Нужно посчитать и вывести: количество слов, количество пробелов, количество знаков препинания.

Пример: "Доброе утро, страна!"

Результат: 3 слова, 2 пробела и 2 знака препинания.

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

При переходе от одного слова к другому увеличиваем счётчик слов. Если встретили пробел, то увеличиваем счётчик пробелов. Если встретили знак препинания, то увеличиваем счётчик знаков препинания.

В конце выводим пользователю результаты подсчётов.

Эталонное решение. Сначала пишем код сами, проверяем на компьютере (как и все примеры программ из уроков), только потом сверяемся

Войдите на сайт как ученик

Упражнение №9. Пользователь вводит текст. Нужно построить и вывести словарь текста в отсортированном по длине слов виде - от самого короткого до самого длинного.

Пример: "Мой дядя самых честных правил, когда не в шутку занемог".

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

Введём текст от пользователя. По уже известному нам из предыдущего упражнения алгоритму разобьём текст на отдельные слова и сложим их в массив.

Упорядочим массив (используя известный нам метод пузырька) по возрастанию длины слова и выведем слова пользователю.

Эталонное решение. Сначала пишем код сами, проверяем на компьютере (как и все примеры программ из уроков), только потом сверяемся

Войдите на сайт как ученик

Для учеников

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

Поэтому вовремя останавливайтесь и спрашивайте преподавателя, если что-то не понятно даже с подсказками.

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

На вопросы учеников — отвечаю по почте, но прежде загляните в ЧАВО (ссылка) .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Основы разработки в 1С такси

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

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


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

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


&НаКлиенте
Процедура ПолучениеДлиныСтроки ( Команда )

Длина_Строки_Число = СтрДлина ( "АБВГД" ); // 5 (символов)

&НаКлиенте
Процедура ПолучениеЧастиСтроки ( Команда )

ВычисляемаяСтрока = "1С Предприятие 8.3" ;

// N символов слева
Первые_два_символа = Лев ( ВычисляемаяСтрока , 2 ); // 1С

// N символов справа
Последние_три_символа = Прав ( ВычисляемаяСтрока , 3 ); // 8.3

// N символов из середины (с 4-го символа получим 11 символов)
Средние_символы = Сред ( ВычисляемаяСтрока , 4 , 11 ); // Предприятие

&НаКлиенте
Процедура ПолучениеЧислаВхожденийТекстаВСтроку ( Команда )

ВычисляемаяСтрока = "Между нами провода да да да да да. И ты сказала да да да." ;
Количество_вхождений = СтрЧислоВхождений ( ВычисляемаяСтрока , "да" ); // 8

&НаКлиенте
Процедура ПолучениеКодаСимвола ( Команда )

Код_из_символа = КодСимвола ( "C" ); // 67 (Латиница)
Код_первого_символа_в_строке = КодСимвола ( "Артур" ); // 1040 (Кирилица)
Код_пятого_символа_в_строке = КодСимвола ( "ABCDEFG" , 5 ); //69 (Латиница)
Символ_из_кода = Символ ( 67 ); // "A" (Латиница)

Преобразование в регистр (верхний, нижний, титульный) в 1С 8.3:

&НаКлиенте
Процедура ПреобразованиеВРегистр ( Команда )

//Регистры (верхний, нижний, титульный)
ВычисляемаяСтрока = "У лукоморья Дуб зелёный" ;
Преобразование_в_Верх_регистр = ВРег ( ВычисляемаяСтрока ); // У ЛУКОМОРЬЯ ДУБ ЗЕЛЁНЫЙ
Преобразование_в_Нижн_регистр = НРег ( ВычисляемаяСтрока ); // у лукоморья дуб зелёный
Преобразование_в_Титл_регистр = ТРег ( ВычисляемаяСтрока ); // У Лукоморья Дуб Зелёный

&НаКлиенте
Процедура ПреобразованиеСтрокиВЧисло ( Команда )

фЧисло = Число ( "987.65" ); // 987,65
фЧисло = Число ( "987,65" ); // 987,65
фЧисло = 100 + "24" ; // 124

//Для сложения числа и строки для получения строки:
фСтрока = Строка ( 100 ) + "24" ; // "10024"

&НаКлиенте
Процедура ПоискТекстаВСтроке ( Команда )

ВычисляемаяСтрока = "1С Предприятие 8.3" ;
ТекущийИндекс = Найти ( ВычисляемаяСтрока , "1С" ); // 1

&НаКлиенте
Процедура ПроверкаНаПустуюСтроку ( Команда )

ВычисляемаяСтрока = " " ;
Если ПустаяСтрока ( ВычисляемаяСтрока ) Тогда
// Т.е. может содержать только незначащие символы (например: Пробелы или Переносы)
Сообщить ( "Эта строка пустая!" );
КонецЕсли;

Проверка начала и конца строки: СтрНачинаетсяС, СтрЗаканчиваетсяНа (доступно с платформы 8.3.6.1977) в 1С 8.3:

&НаКлиенте
Процедура ПроверкаНачалаИКонцаСтроки ( Команда )

// СтрНачинаетсяС - это проверка начала строки - со слова "Как"
РезультатПроверки = СтрНачинаетсяС ( "Как хорошо жить" , "Как" ); // Истина

// СтрЗаканчиваетсяНа - это проверка конца строки: на слово "хорошо"
РезультатПроверки = СтрЗаканчиваетсяНа ( "Как хорошо жить" , "хорошо" ); // Ложь

Перевод строки на разные языки НСтр (доступно с платформы 8.3.6.1977) в 1С 8.3:

&НаКлиенте
Процедура ПереводСтрокиНаРазныеЯзыки ( Команда )

РезультатПеревода = НСтр ( "ru = 'Как дела?'; en = 'How are you?'" ); // зависит от установленного языка

Операции с многострочной строкой (с переносами) в 1С 8.3:

&НаКлиенте
Процедура МногострочнаяСтрока ( Команда )

//Вставка переноса в строку
ВычисляемаяСтрока =
"Оплата по договору №1" + Символы . ПС + //1-я строка
"Контрагент ""Новая жизнь""" + Символы . ПС + //2-я строка (если нужно использовать " в строке то, используются двойные кавычки "")
"Сумма 1000 руб. с НДС 20%" ; //3-я строка

Результат_число_строк = СтрЧислоСтрок ( ВычисляемаяСтрока ); // 3(строки)
Результат_2_строка = СтрПолучитьСтроку ( ВычисляемаяСтрока , 2 )); // "Контрагент ""Новая жизнь"""

&НаКлиенте
Процедура РазбиениеСтрокиСРазделителями1 ( Команда ) //Пример №1

Разделитель = ";" ;
СтрокиСРазделителем = СтрЗаменить ( "2020; 2021; 2022" , Разделитель , Символы . ПС );
Для А = 1 По СтрЧислоСтрок ( СтрокиСРазделителем ) Цикл
Сообщить ( СтрПолучитьСтроку ( СтрокиСРазделителем , А ));
КонецЦикла;

&НаКлиенте
Процедура РазбиениеСтрокиСРазделителями2 ( Команда ) //Пример №2 (доступно с платформы 8.3.6.1977)

// Параметры СтрРазделить: Строка, Разделитель(символы), Булево (по умолчанию - Истина - включать в результат пустые строки)
РезультатМассив = СтрРазделить ( "2020; 2021; 2022" , ";" ); // Массив с элементами [0] = "2020", [1] = "2021 ", [2] = "2022"
// Существует обратная функция СтрСоединить, которая наоборот преобразует массив к строке.
РезультатСтрока = СтрСоединить ( РезультатМассив , ";" ); // Строка "2020; 2021; 2022"

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