Взять n слов из текста подряд и создать из этого список

hago73

Client
Регистрация
07.09.2012
Сообщения
59
Благодарностей
21
Баллы
8
Добрый день.
Требуется взять n слов из текста с самого начала, добавить в список, потом со второго слова взять n слов, добавить в список и так далее до конца текста.
Нашел код по рандомному взятию из текста 5 слов, но такое мне не совсем подходит:
var wordsCount = 5;
var text = переменная_тут;
var split = text.Split(' ').ToList();
var rnd = new Random().Next(split.Count - wordsCount);
var output = string.Join(" ", split.GetRange(rnd, wordsCount));
return output;
 

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
549
Благодарностей
1 130
Баллы
93
Добрый день.
Требуется взять n слов из текста с самого начала, добавить в список, потом со второго слова взять n слов, добавить в список и так далее до конца текста.
Нашел код по рандомному взятию из текста 5 слов, но такое мне не совсем подходит:
var wordsCount = 5;
var text = переменная_тут;
var split = text.Split(' ').ToList();
var rnd = new Random().Next(split.Count - wordsCount);
var output = string.Join(" ", split.GetRange(rnd, wordsCount));
return output;
Как то так?

Нужно две переменные и итоговой список в PM:
1. "lineToTake" — содержит номер строки
2. "wordToTake" — содержит под каким номером нужно взять слово
3. "List" — список куда надо сохранить найденное слово

Получить N слово из Y строки и записать в список:
int lineToTake = int.Parse(project.Variables["lineToTake"].Value); // под каким номером взять фразу
int wordToTake = int.Parse(project.Variables["wordToTake"].Value); // под каким номером взять слово
string phrase = project.Lists["List"][lineToTake]; // получить фразу
string word = phrase.Split(' ')[wordToTake]; // получить нужное слово
project.Lists["List"].Add(word); // в "list" добавить найденное слово
 
  • Спасибо
Реакции: hago73

hago73

Client
Регистрация
07.09.2012
Сообщения
59
Благодарностей
21
Баллы
8
Как то так?

Нужно две переменные и итоговой список в PM:
1. "lineToTake" — содержит номер строки
2. "wordToTake" — содержит под каким номером нужно взять слово
3. "List" — список куда надо сохранить найденное слово

Получить N слово из Y строки и записать в список:
int lineToTake = int.Parse(project.Variables["lineToTake"].Value); // под каким номером взять фразу
int wordToTake = int.Parse(project.Variables["wordToTake"].Value); // под каким номером взять слово
string phrase = project.Lists["List"][lineToTake]; // получить фразу
string word = phrase.Split(' ')[wordToTake]; // получить нужное слово
project.Lists["List"].Add(word); // в "list" добавить найденное слово
Немного не то.
Есть текст. Даже сделал в одну строку без всех символов кроме букв, цифр и пробелов.
Допустим текст :
аа бб вв гг дд ее жж
Берем, допустим, по 3 слова в список, в итоге в списке должно быть:
аа бб вв
бб вв гг
вв гг дд
гг дд ее
дд ее жж
 

hago73

Client
Регистрация
07.09.2012
Сообщения
59
Благодарностей
21
Баллы
8
В итоге сделал сам без c#, чисто на кубиках.
Если вкратце, то добавляем слова в список с разделителем пробел. Берем из списка строки со второй по нужную без удаления в переменные "слово 2", "слово 3" и т.д. Потом берем первую строку с удалением в "слово1"
Далее через обработку текста объединяем в одну переменную и добавляем в другой список
 
  • Спасибо
Реакции: Sergodjan и djaga

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
549
Благодарностей
1 130
Баллы
93
Немного не то.
Есть текст. Даже сделал в одну строку без всех символов кроме букв, цифр и пробелов.
Допустим текст :
аа бб вв гг дд ее жж
Берем, допустим, по 3 слова в список, в итоге в списке должно быть:
аа бб вв
бб вв гг
вв гг дд
гг дд ее
дд ее жж
Ну вот, другое дело! Этот пример уже намного понятнее.))

В итоге сделал сам без c#, чисто на кубиках.
Если вкратце, то добавляем слова в список с разделителем пробел. Берем из списка строки со второй по нужную без удаления в переменные "слово 2", "слово 3" и т.д. Потом берем первую строку с удалением в "слово1"
Далее через обработку текста объединяем в одну переменную и добавляем в другой список
Окей. Ну я все равно быстренько набросал на C#. Возможно будет полезен.)
Брать N слова из предложения и составлять новое с продвижением в один такт:
string str = project.Variables["str"].Value; // переменная "str" с значением "аа бб вв гг дд ее жж"
int numberOfWords = int.Parse(project.Variables["numberOfWords"].Value); // количество слов в переменной "numberOfWords"
List<string> listWords = str.Split(' ').ToList();

for (int i = 0; i < listWords.Count; i++)
{
    if (i + numberOfWords > listWords.Count) continue;
    string strRes = string.Join(" ", listWords.GetRange(i, numberOfWords));
    project.Lists["List"].Add(strRes); // добавление в список под именем "List"
}
Ниже шаблон для наглядности ↓
 

Вложения

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