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

krepskiy

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

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

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

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


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


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

doc

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

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

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

krepskiy

Client
Регистрация
18.02.2016
Сообщения
246
Благодарностей
197
Баллы
43

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

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



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

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
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 и krepskiy

krepskiy

Client
Регистрация
18.02.2016
Сообщения
246
Благодарностей
197
Баллы
43
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 642
Баллы
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 и krepskiy

krepskiy

Client
Регистрация
18.02.2016
Сообщения
246
Благодарностей
197
Баллы
43
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;
БЛА-ГО-ДА-РЮ !!!!!
 

krepskiy

Client
Регистрация
18.02.2016
Сообщения
246
Благодарностей
197
Баллы
43
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 268
Баллы
113
Для какого текста возвращается пустота:?
 

krepskiy

Client
Регистрация
18.02.2016
Сообщения
246
Благодарностей
197
Баллы
43

bad robot

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

ivan777

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

bad robot

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

Sergodjan

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

62447


62448
 

Вложения

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

ivan777

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

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