Как разбить длинный текст, в одну строчку на абзацы рандомно.

krepsky

Client
Регистрация
18.02.2016
Сообщения
392
Благодарностей
287
Баллы
63
Здравствуйте, помогите пожалуйcта. К примеру есть текст в одну строчку:

Чтобы всегда оставаться ВКонтакте с друзьями и близкими, теперь не обязательно находиться за компьютером. Установите официальное мобильное приложение ВКонтакте и оставайтесь в курсе новостей Ваших друзей, где бы Вы ни находились

Каким образом его можно разбивать, что бы он каждый раз разбивался на рандомное количество строк, например:

Чтобы всегда оставаться ВКонтакте с друзьями и близкими,
теперь не обязательно находиться за компьютером.
Установите официальное мобильное приложение ВКонтакте и
оставайтесь в курсе новостей Ваших друзей, где бы Вы ни находились.


А в следующий раз он разбился бы например так:
Чтобы всегда
оставаться ВКонтакте с друзьями и
близкими, теперь не
обязательно находиться за
компьютером. Установите официальное
мобильное приложение ВКонтакте и
оставайтесь в курсе новостей
Ваших друзей, где бы Вы ни находились.


Уже 200 страниц по помощи новичкам пролистал, и не нашел ничего подобного...
 

doc

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

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

строки поиска замены:
(?<=(\?\s*|\!\s*|\.\s*|,\s*|:\s*|;\s*|-\s*|\s+))
{||||{-String.Enter-}}
в последней - больше | - меньше вероятность переноса
 

krepsky

Client
Регистрация
18.02.2016
Сообщения
392
Благодарностей
287
Баллы
63

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

строки поиска замены:
(?<=(\?\s*|\!\s*|\.\s*|,\s*|:\s*|;\s*|-\s*|\s+))
{||||{-String.Enter-}}
в последней - больше | - меньше вероятность переноса



Спасибо, это лучше чем ничего )))
 
  • Спасибо
Реакции: Radzhab

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 269
Баллы
113
C#:
var data = project.Variables["Переменная1"].Value;
var output = "";
var kolLines = 3; // Здесь задаем количество строк на которое мы хотим поделить текст
var KolOneLine = (int)Math.Ceiling((double)(data.Split(' ').Count() / (double)kolLines)); // тут вычисляется кол-во слов в одной строке
for (int i = 0; i < KolOneLine; i++)
      {
         output = output + string.Join(" ", data.Split(' ').Skip(KolOneLine * i).Take(KolOneLine).ToList()) + "\n";
      }
return output;
Вот вывод для 3-х строчного текста
upload_2016-5-24_0-57-30.png
 
  • Спасибо
Реакции: Shtopor и krepsky

krepsky

Client
Регистрация
18.02.2016
Сообщения
392
Благодарностей
287
Баллы
63
C#:
var data = project.Variables["Переменная1"].Value;
var output = "";
var kolLines = 3; // Здесь задаем количество строк на которое мы хотим поделить текст
var KolOneLine = (int)Math.Ceiling((double)(data.Split(' ').Count() / (double)kolLines)); // тут вычисляется кол-во слов в одной строке
for (int i = 0; i < KolOneLine; i++)
      {
         output = output + string.Join(" ", data.Split(' ').Skip(KolOneLine * i).Take(KolOneLine).ToList()) + "\n";
      }
return output;
Вот вывод для 3-х строчного текста
Посмотреть вложение 13649
Спасибо огромное!!

Попытался сделать, что бы количество строк рандомно выбиралось (через экшен random) но у меня снипет работать перестаёт:

var data = project.Variables["pismo"].Value;
var output = "";
var kolLines = project.Variables["random"].Value; // Здесь задаем количество строк на которое мы хотим поделить текст
var KolOneLine = (int)Math.Ceiling((double)(data.Split(' ').Count() / (double)kolLines)); // тут вычисляется кол-во слов в одной строке
for (int i = 0; i < KolOneLine; i++)
{
output = output + string.Join(" ", data.Split(' ').Skip(KolOneLine * i).Take(KolOneLine).ToList()) + "\n";
}
return output;

Что я не так написал??
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 652
Баллы
113
C#:
var data = project.Variables["pismo"].Value;
var output = "";
var kolLines = int.Parse(project.Variables["random"].Value); // Здесь задаем количество строк на которое мы хотим поделить текст
var KolOneLine = (int)Math.Ceiling((double)(data.Split(' ').Count() / (double)kolLines)); // тут вычисляется кол-во слов в одной строке
for (int i = 0; i < KolOneLine; i++)
{
output = output + string.Join(" ", data.Split(' ').Skip(KolOneLine * i).Take(KolOneLine).ToList()) + "\n";
}
return output;
 
  • Спасибо
Реакции: Radzhab и krepsky

krepsky

Client
Регистрация
18.02.2016
Сообщения
392
Благодарностей
287
Баллы
63
C#:
var data = project.Variables["pismo"].Value;
var output = "";
var kolLines = int.Parse(project.Variables["random"].Value); // Здесь задаем количество строк на которое мы хотим поделить текст
var KolOneLine = (int)Math.Ceiling((double)(data.Split(' ').Count() / (double)kolLines)); // тут вычисляется кол-во слов в одной строке
for (int i = 0; i < KolOneLine; i++)
{
output = output + string.Join(" ", data.Split(' ').Skip(KolOneLine * i).Take(KolOneLine).ToList()) + "\n";
}
return output;
БЛА-ГО-ДА-РЮ !!!!!
 

krepsky

Client
Регистрация
18.02.2016
Сообщения
392
Благодарностей
287
Баллы
63
C#:
var data = project.Variables["pismo"].Value;
var output = "";
var kolLines = int.Parse(project.Variables["random"].Value); // Здесь задаем количество строк на которое мы хотим поделить текст
var KolOneLine = (int)Math.Ceiling((double)(data.Split(' ').Count() / (double)kolLines)); // тут вычисляется кол-во слов в одной строке
for (int i = 0; i < KolOneLine; i++)
{
output = output + string.Join(" ", data.Split(' ').Skip(KolOneLine * i).Take(KolOneLine).ToList()) + "\n";
}
return output;
Извиняюсь...А в чем может быть проблема... Текст в 50% случаях разбивается как следует, а в остальных случаях в переменную возвращаются пустые строки.
Что это может быть?? В проджект мейкере работает всегда все нормально, а уже в самом зеннопостере появляется этот косяк.
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 269
Баллы
113
Для какого текста возвращается пустота:?
 

krepsky

Client
Регистрация
18.02.2016
Сообщения
392
Благодарностей
287
Баллы
63

bad robot

Client
Регистрация
07.03.2011
Сообщения
209
Благодарностей
57
Баллы
28
Может кто-нибудь помочь с переделываением последнего кода, чтобы на абзацы делилось не по количеству слов, а по предложениям? Надо чтобы на абзацы разбивало целыми предложениями, а не разрывало их.
 
  • Спасибо
Реакции: Radzhab

ivan777

Client
Регистрация
10.12.2018
Сообщения
76
Благодарностей
24
Баллы
8
не нашли решения добрый день касаемо разбивки текста на предложения??
 

bad robot

Client
Регистрация
07.03.2011
Сообщения
209
Благодарностей
57
Баллы
28

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
22 460
Благодарностей
10 012
Баллы
113
чтобы на абзацы делилось не по количеству слов, а по предложениям? Надо чтобы на абзацы разбивало целыми предложениями, а не разрывало их.
не нашли решения добрый день касаемо разбивки текста на предложения??
Немного модернизировал идею @doc

62447


62448
 

Вложения

Последнее редактирование:
  • Спасибо
Реакции: ivan777 и Astraport

ivan777

Client
Регистрация
10.12.2018
Сообщения
76
Благодарностей
24
Баллы
8
спасибо!!
 

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