|
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429
|
|
Ограничить длину строк в тексте26.12.2020, 16:29. Показов 5127. Ответов 33
Метки нет (Все метки)
Имеется некий текст в которм строки совершенно разной длины (есть и пустые строки то есть просто перенос на новую строку vbCrLf ). Нужно чтобы ни одна строка в тексте не превышала заданную длину maxlen, но так, чтобы слова не разделялись, то есть если разделение символом vbCrLf придётся посреди слова, например "совершенно раз/ной длины", то строка должна разделиться по пробелу перед словом на которое пришлось разделение:"совершенно /разной длины" то есть "совершенно" останетсяна одной строке, а "разной длины" перенесётся на новую строку
0
|
|
| 26.12.2020, 16:29 | |
|
Ответы с готовыми решениями:
33
В тексте из N строк выровнять строки так, чтобы каждая строка имела длину 65 символов Ограничить длину текста в JLabel |
|
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429
|
|
| 26.12.2020, 17:57 [ТС] | |
|
maxlen=150
Текстовый файл прилагаю
0
|
|
|
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429
|
|
| 26.12.2020, 19:07 [ТС] | |
|
минимум любой то есть вплоть до пустой строки
Добавлено через 3 минуты нет неправильно говорю - о минимуме речи нет все остальные строки которые меньше maxlen остаются нетронутые, изменять (разбивать) надо только строки бОльшие maxlen
0
|
|
|
Супер-модератор
|
||||||
| 26.12.2020, 19:15 | ||||||
Сообщение было отмечено I can как решение
Решение
Вот, от нечего делать, написал. Это пропорциональное выравнивание пробелами по задаваемой ширине:
3
|
||||||
|
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429
|
|
| 26.12.2020, 19:26 [ТС] | |
|
Catstail - спасибо! Код интересный и наверняка пригодится но к сожалению это не то что мне нужно сейчас
Кстати у меня последнее слово "воз" не печатается
0
|
|
|
|
||
| 26.12.2020, 21:10 | ||
|
Т.е. речь о "защите от дурака". В программе для себя, не важно, а в программе для всех, защиту надо ставить на максимум, чтобы он был в разумных пределах. Допустим, от 10 до 159 или как-то ещё. В вышеприведённой программе, защиты нет. Максимальный размер буфера в функции Catstail, установлен 100, я увеличил до 200. Т.е. если максимальный размер строки будет больше 200, то программа "сломается".
0
|
||
|
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429
|
|
| 26.12.2020, 21:37 [ТС] | |
|
Catstail, Argus19 - как-то мне сложным показался ваш подxод я предполагал что-то такого типа:
строка - наш текст start = 1 при помощи substringLen=InStr(start, строка, vbCrLf) ищем следующий vbCrLf если substringLen < maxlen то тогда start = substringLen + 1 и опять ищем следующий vbCrLf если substringLen > maxlen то тогда ищем последний пробел в отрезке от start до start + maxlen (как?) и делаем Replace вместо пробела пробел+vbCrLf и start = start + maxlen и всё опять повторяется по какому условию заканчивать этот цикл не соображаю в общем что-то такого типа но пытаясь реализовать это я застрял и туплю до сиx пор Что скажете, други?
0
|
|
|
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429
|
|
| 26.12.2020, 21:52 [ТС] | |
|
некоторые ошибки есть в том алгоритме что я написал но надеюсь вы поняли мой ламерский бред
Добавлено через 5 минут Да нет же! Всё работает, спасибо БОЛЬШОЕ! но чисто от шизы - xочется покороче
0
|
|
|
|
||
| 26.12.2020, 22:05 | ||
|
Первая длинная строка в вашем тексте состоит из 400 с лишним символов и в неё входит несколько предложений, которые надо укоротить до нужной длины. Функция Split возвращает массив строк. Берём первую строку и, если она длиннее указанного размера, то надо её разбить. Функцией InstrRev найти пробел, по номеру его вхождения прикинуть длину строки и, если не устраивает, то искать опять с новой позиции. Выделить строку, соответствующую нужной длине и записать в переменную. В другую переменную записать остаток строки. Получить из массива следующую строку, в начало её вставить огрызок из переменной и повторить предыдущий геморрой и т.д. Как-то так.
0
|
||
|
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429
|
|
| 26.12.2020, 22:16 [ТС] | |
|
OK Всё понятно Ещё раз большое спасибо за помощь!
0
|
|
|
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429
|
|
| 26.12.2020, 22:41 [ТС] | |
|
ОК Спасибо!
Но я всё-таки пытаюсь закончить свой вариант
1
|
|
|
Любитель
1042 / 748 / 161
Регистрация: 27.01.2019
Сообщений: 1,516
|
||||||
| 27.12.2020, 01:25 | ||||||
|
Argus19, Catstail, Отличная программа и нужная!Только у меня вопрос,почему при задании малой длины,тех же 20,в строке
0
|
||||||
|
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429
|
|||||||||||
| 27.12.2020, 07:19 [ТС] | |||||||||||
|
Тут мне такая мысль пришла в голову - если мы используем регулярку:
Может кто-нибудь возьмёт на себя труд реализовать этот подxод - я ведь дня 2-3 буду делать при моей ламерности ![]() Добавлено через 8 минут Забыл написать что и позиции всеx пробелов тоже узнаём
0
|
|||||||||||
| 27.12.2020, 07:19 | |
|
Помогаю со студенческими работами здесь
20
ограничить длину числа в Edit Control Не удается ограничить длину строки в TextBox Как ограничить длину вводимого текста? Ограничить длину строки в listBox и listView Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|