7.7 Есть у кого функция для резки строки?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Asttoxa, 3 июл 2012.

  1. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    Думаю многие сталкивались с тем что нужно строку например в 50 знаков порезать на куски к примеру по 20 знаков, все очень просто еслибы не нужно было, чтобы словечки оставались целыми. И запихать строки например в Список значений. В результате должно получиться много строк, в которых меньше 20 знаков может, а больше не может при этом соблюдаться условие целостности слов.
    Может кто поделиться? Не хочется изобретать велик.
    Спасибо заранее!
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Вы ведь сами ответили... Что мешает разбить строку по словам в СписокЗначений?
  3. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Алгоритм элементарный
    1. Делаем МнСтрок = СтрЗаменить(ИсходнаяСтрока, " ", Символы.ПС);
    2. Пробегаем Строки из мнСтрок и генерим список. Пока суммарная строка текущая короче 20 символов - ок, если что добавляем новый текущий элемент
  4. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    Не я наверное не так объяснил.
    Например есть строка: "Мой дядя самых честных правил, когда не в шутку занемог, он уважать себя заставил и лучше выдумать не мог."
    106 символов. Нужно поделить например на строки по 20 символов.. После обработки должно получиться следующее:
    1) "Мой дядя самых"
    2) "честных правил,"
    3) "когда не в шутку"
    4) "занемог, он уважать"
    5) "себя заставил и"
    6) "лучше выдумать не"
    7) "мог."

    А не по словам.
  5. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    дак у вас и получится не по словам, просто когда слова в строку потом соединять начнете проверяйте по длине строки и присоединяемого слова на 20, вот и все...
  6. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Все все поняли. Посмотрите внимательно что вам написали. Просто так перебирать проще.
    1 шагом получим список по каждому слову.
    Вторым шагом пойдете по готовым словам.

    Код:
    РазбитаяСтрока = СтрЗаменить(ИсходнаяСтрока, " ", Символы.ПС);
    СтрокиПо20 = Новый СписокЗначений;
    ТекСтрока = "";
    Для А = 1 по СтрЧислоСтрок(РазбитаяСтрока) Цикл
    ТекСлово = СтрПолучитьСтроку(РазбитаяСтрока, А);
    Если СтрДлина(ТекСтрока + " " + ТекСлово) <= 20 Тогда
    ТекСтрока = ТекСтрока + " " + ТекСлово;
    Иначе
    СтрокиПо20.Добавить(ТекСтрока);
    ТекСтрока = ТекСлово;
    КонецЕсли;
    КонецЦикла;
    СтрокиПо20.Добавить(ТекСтрока); // Последняя строка до 20 не дотянет
    
    Изобретать ничего не надо, чуть-чуть подумать и написать. 5 строк кода - это даже не велосипед.
  7. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Ну код я на 8-ке привел адаптированный (нужна была похожая штука, но тут упростил очень сильно). Аналогично на 7.7 сделайте. Там примерно такие же функции есть.
    Для первой части можно ИзСтрокиСРазделителями использовать

Поделиться этой страницей