Перенос строки через заданное кол. символов

Hannes

Client
Регистрация
03.02.2016
Сообщения
503
Благодарностей
248
Баллы
43
Здравствуйте!

Подскажите, пожалуйста, как можно сделать перенос строки через заданное количество символов с сохранением целостности слов (разбивка просто по кол. символов не подходит).

Пример.
Есть предложение:

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

Нужно разбить на строки, содержащие 20 символов.
В детстве он пережил
сотрясение мозга и
с тех пор верил
всему, что пишут в
воскресных газетах.



Подскажите, пожалуйста, как это можно реализовать?
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 654
Благодарностей
8 781
Баллы
113
Здравствуйте!

Подскажите, пожалуйста, как можно сделать перенос строки через заданное количество символов с сохранением целостности слов (разбивка просто по кол. символов не подходит).

Пример.
Есть предложение:

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

Нужно разбить на строки, содержащие 20 символов.
В детстве он пережил
сотрясение мозга и
с тех пор верил
всему, что пишут в
воскресных газетах.



Подскажите, пожалуйста, как это можно реализовать?
Регулярка:
Код:
[\w\W]{1,20}(?=\ |$)
upload_2018-8-23_21-57-7.png


Использовать можно через экшен Обработка текста - Regex (Все, Положить результат в список).
 
  • Спасибо
Реакции: SergSh, Hannes и ibred

Hannes

Client
Регистрация
03.02.2016
Сообщения
503
Благодарностей
248
Баллы
43
Спасибо! Подскажи, пожалуйста, можно ли делать переносы без пробела (или оставлять пробел в верхней строке), что бы строки не начинались с пробела?
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 654
Благодарностей
8 781
Баллы
113
Спасибо! Подскажи, пожалуйста, можно ли делать переносы без пробела (или оставлять пробел в верхней строке), что бы строки не начинались с пробела?
После взятия строки из списка ее можно Trim'ить через Обработка текста - Trim.
В результате этой операции убираются пробельные символы в начале и в конце строки.
 
  • Спасибо
Реакции: Hannes

budora

Client
Регистрация
13.08.2012
Сообщения
831
Благодарностей
554
Баллы
93
Здравствуйте!

Подскажите, пожалуйста, как можно сделать перенос строки через заданное количество символов с сохранением целостности слов (разбивка просто по кол. символов не подходит).
Спасибо! Подскажи, пожалуйста, можно ли делать переносы без пробела (или оставлять пробел в верхней строке), что бы строки не начинались с пробела?
Код:
string sourceString = "Подскажите, пожалуйста, как можно сделать перенос строки через заданное количество символов с сохранением целостности слов (разбивка просто по кол. символов не подходит).В детстве он пережил сотрясение мозга и с тех пор верил всему, что пишут в воскресных газетах. Спасибо! Подскажи, пожалуйста, можно ли делать переносы без пробела (или оставлять пробел в верхней строке), что бы строки не начинались с пробела?";
int length = 20; //сколько символов
char[] charsForEOL = { '.', ',', ' ' };
string resultString = "";
do
{
    for (int i = length; i >= 1; i--)
    {
        if (charsForEOL.Contains(sourceString[i]))
        {
                resultString += sourceString.Substring(0, i) + "\n";
                sourceString = sourceString.Substring(i + 1);
                break;
        }
        if(i == 1)
        {
                resultString += sourceString.Substring(0, length) + "\n";
                sourceString = sourceString.Substring(length + 1);
        }
    }
} while (sourceString.Length > length);
return resultString;
 
  • Спасибо
Реакции: Hannes и Sergodjan

Hannes

Client
Регистрация
03.02.2016
Сообщения
503
Благодарностей
248
Баллы
43
Код:
string sourceString = "Подскажите, пожалуйста, как можно сделать перенос строки через заданное количество символов с сохранением целостности слов (разбивка просто по кол. символов не подходит).В детстве он пережил сотрясение мозга и с тех пор верил всему, что пишут в воскресных газетах. Спасибо! Подскажи, пожалуйста, можно ли делать переносы без пробела (или оставлять пробел в верхней строке), что бы строки не начинались с пробела?";
int length = 20; //сколько символов
char[] charsForEOL = { '.', ',', ' ' };
string resultString = "";
do
{
    for (int i = length; i >= 1; i--)
    {
        if (charsForEOL.Contains(sourceString[i]))
        {
                resultString += sourceString.Substring(0, i) + "\n";
                sourceString = sourceString.Substring(i + 1);
                break;
        }
        if(i == 1)
        {
                resultString += sourceString.Substring(0, length) + "\n";
                sourceString = sourceString.Substring(length + 1);
        }
    }
} while (sourceString.Length > length);
return resultString;
Спасибо! Работает отлично, но почему-то подрезает конец текста (он просто пропадает).

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

Получается:
В детстве он пережил
сотрясение мозга и с
тех пор верил всему,
что пишут в


Почему-то съелось "
воскресных газетах."
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 625
Благодарностей
4 611
Баллы
113

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)