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

Hannes

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

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

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

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

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



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

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
22 715
Благодарностей
10 171
Баллы
113
Здравствуйте!

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

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

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

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



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


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

Hannes

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

Sergodjan

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

budora

Client
Регистрация
13.08.2012
Сообщения
831
Благодарностей
557
Баллы
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
Сообщения
548
Благодарностей
280
Баллы
63
Код:
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 685
Благодарностей
4 652
Баллы
113

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