C# получить первые три слова из переменной

Kolokol1

Client
Регистрация
08.06.2018
Сообщения
38
Благодарностей
7
Баллы
8
Добрый день
Подскажите как получить первые три слова из переменной?
Дано:
REGEX_TITLE_LIST1=Можете вставлять в код переменные уже в синтаксисе
Результат должен быть:
"Можете вставлять в"

Нашел на форуме старый кусок кода:
string str = project.Variables["REGEX_TITLE_LIST1"].Value;
string[] strMass = str.Replace(" ", ":").Split(':');
string dvaPosldSlova = strMass[strMass.Length - 2] + " " + strMass[strMass.Length - 1];
return dvaPosldSlova;

не могу переделать в обратном направлении
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 523
Благодарностей
1 321
Баллы
113
Добрый день
Подскажите как получить первые три слова из переменной?
Дано:
REGEX_TITLE_LIST1=Можете вставлять в код переменные уже в синтаксисе
Результат должен быть:
"Можете вставлять в"

Нашел на форуме старый кусок кода:
string str = project.Variables["REGEX_TITLE_LIST1"].Value;
string[] strMass = str.Replace(" ", ":").Split(':');
string dvaPosldSlova = strMass[strMass.Length - 2] + " " + strMass[strMass.Length - 1];
return dvaPosldSlova;

не могу переделать в обратном направлении
C#:
// Вырезаем Регуляркой Нужное
var Res = System.Text.RegularExpressions.Regex.Match("Можете вставлять в код переменные уже в синтаксисе", @"\w+\ \w+\ \w+").Value;
return Res;
 

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
639
Благодарностей
581
Баллы
93
C#:
// Вырезаем Регуляркой Нужное
var Res = System.Text.RegularExpressions.Regex.Match("Можете вставлять в код переменные уже в синтаксисе", @"\w+\ \w+\ \w+").Value;
return Res;
и что это даст ?
если в предложении будут знаки препинания - провал
если в предложении будут цифры - снова провал
если в предложении будут спецсимволы- опять провал

C#:
string text = "Привет, как дела, как настроение?";
return string.Join(" ", text.Split().Take(3));
 
  • Спасибо
Реакции: udder и BAZAg

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 787
Благодарностей
2 453
Баллы
113
C#:
project.Variables["REGEX_TITLE_LIST1"].Value = "Можете вставлять в код переменные уже в синтаксисе";

int count = 3; // Сколько слов брать
string result = string.Empty;
string line = project.Variables["REGEX_TITLE_LIST1"].Value.Trim(); // Убираем начальные, конечные пробелы

string[] all_words = line.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); // Разбили по разделителю, удалили пустые строки, если в строке было 2 пробела подряд...
if(all_words.Length > count){ // Если нужное количество слов есть
    result = string.Join(" ", all_words.Take(count)); // Берем и соединяем через пробел
}
else {
    // Если не нашли указанное количество слов - возвращаем пустое значение
    result = string.Empty;
}

project.Variables["REGEX_TITLE_LIST1"].Value = result; // Возвращаем результат обратно
 

Kolokol1

Client
Регистрация
08.06.2018
Сообщения
38
Благодарностей
7
Баллы
8
C#:
project.Variables["REGEX_TITLE_LIST1"].Value = "Можете вставлять в код переменные уже в синтаксисе";

int count = 3; // Сколько слов брать
string result = string.Empty;
string line = project.Variables["REGEX_TITLE_LIST1"].Value.Trim(); // Убираем начальные, конечные пробелы

string[] all_words = line.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); // Разбили по разделителю, удалили пустые строки, если в строке было 2 пробела подряд...
if(all_words.Length > count){ // Если нужное количество слов есть
    result = string.Join(" ", all_words.Take(count)); // Берем и соединяем через пробел
}
else {
    // Если не нашли указанное количество слов - возвращаем пустое значение
    result = string.Empty;
}

project.Variables["REGEX_TITLE_LIST1"].Value = result; // Возвращаем результат обратно

Спасибо большое за ответ. Заметил странность в работе кода, если предложение состоит из 1 слова, и int count = 1 слово, возвращает пустое значение, если в предложении 2 слова а int count = 2 то возвращает пустое значение

C#:
project.Variables["REGEX_TITLE_LIST1"].Value = "Можете вставлять";
int count = 2;
..
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 523
Благодарностей
1 321
Баллы
113
C#:
string text = "Привет, как дела, как настроение?";
return string.Join(" ", text.Split().Take(3));
И что это даст?
А если будет несколько пробелов - провал?
87024


Умничать может каждый, но не всегда то умничество - является окончательной истинной, поэтому желательно отвечать только за свои предложения, а не чужие.:bt:


и что это даст ?
если в предложении будут знаки препинания - провал
если в предложении будут цифры - снова провал
если в предложении будут спецсимволы- опять провал
Даст конкретный ответ того, чего спросили. Если вам ничего не даст, пройдите мимо.

Результат должен быть:
"Можете вставлять в"
87025
 
Последнее редактирование:

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 523
Благодарностей
1 321
Баллы
113
Спасибо большое за ответ. Заметил странность в работе кода, если предложение состоит из 1 слова, и int count = 1 слово, возвращает пустое значение, если в предложении 2 слова а int count = 2 то возвращает пустое значение

C#:
project.Variables["REGEX_TITLE_LIST1"].Value = "Можете вставлять";
int count = 2;
..

Этот чем вам не подошел, можно пожалуйста узнать?
C#:
// Забив переменной
project.Variables["REGEX_TITLE_LIST1"].Value = "Можете вставлять в код переменные уже в синтаксисе";
// Переменную зенно, переносим в C# переменную, чистим от лишних пробелов
string Text = project.Variables["REGEX_TITLE_LIST1"].Value.Trim();

// Вырезаем Регуляркой Нужное
var Res = System.Text.RegularExpressions.Regex.Match(Text, @"^\w+\W+\w+\W+\w+|^\w+\W+\w+|^\w+").Value;

// Возвращаем результат
return Res;
 
Последнее редактирование:
  • Спасибо
Реакции: Kolokol1

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 523
Благодарностей
1 321
Баллы
113
Спасибо большое за ответ. Заметил странность в работе кода, если предложение состоит из 1 слова, и int count = 1 слово, возвращает пустое значение, если в предложении 2 слова а int count = 2 то возвращает пустое значение

C#:
project.Variables["REGEX_TITLE_LIST1"].Value = "Можете вставлять";
int count = 2;
..
Потому, что равно забыли указать.
C#:
project.Variables["REGEX_TITLE_LIST1"].Value = "Можете";

int count = 1; // Сколько слов брать
string result = string.Empty;
string line = project.Variables["REGEX_TITLE_LIST1"].Value.Trim(); // Убираем начальные, конечные пробелы

string[] all_words = line.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); // Разбили по разделителю, удалили пустые строки, если в строке было 2 пробела подряд...
if(all_words.Length >= count){ // Если нужное количество слов есть
    result = string.Join(" ", all_words.Take(count)); // Берем и соединяем через пробел
}
else {
    // Если не нашли указанное количество слов - возвращаем пустое значение
    result = string.Empty;
}
return result;
 

Kolokol1

Client
Регистрация
08.06.2018
Сообщения
38
Благодарностей
7
Баллы
8
Этот чем вам не подошел, можно пожалуйста узнать?
C#:
// Забив переменной
project.Variables["REGEX_TITLE_LIST1"].Value = "Можете вставлять в код переменные уже в синтаксисе";
// Переменную зенно, переносим в C# переменную, чистим от лишних пробелов
string Text = project.Variables["REGEX_TITLE_LIST1"].Value.Trim();

// Вырезаем Регуляркой Нужное
var Res = System.Text.RegularExpressions.Regex.Match(Text, @"^\w+\W+\w+\W+\w+|^\w+\W+\w+|^\w+").Value;

// Возвращаем результат
return Res;
Я не силен в с#, я даже запустить не могу этот код. Могу догадыватся что это regexp на пробелах, то есть разделение по пробелам. Если запятая будет наверное это не будет работать, точнее будет слово с запятой. В любом случае спасибо Вам и всем откликнувшимся:ay:
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 523
Благодарностей
1 321
Баллы
113
Я не силен в с#, я даже запустить не могу этот код. Могу догадыватся что это regexp на пробелах, то есть разделение по пробелам. Если запятая будет наверное это не будет работать, точнее будет слово с запятой. В любом случае спасибо Вам и всем откликнувшимся:ay:
C#:
project.Variables["REGEX_TITLE_LIST1"].Value = "Можете";

int count = 1; // Сколько слов брать
string result = string.Empty;
string line = project.Variables["REGEX_TITLE_LIST1"].Value.Trim(); // Убираем начальные, конечные пробелы

string[] all_words = line.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); // Разбили по разделителю, удалили пустые строки, если в строке было 2 пробела подряд...
if(all_words.Length >= count){ // Если нужное количество слов есть
    result = string.Join(" ", all_words.Take(count)); // Берем и соединяем через пробел
}
else {
    // Если не нашли указанное количество слов - возвращаем пустое значение
    result = string.Empty;
}
return result;
Этот код вам полностью теперь подошел?


Я не силен в с#, я даже запустить не могу этот код. Могу догадыватся что это regexp на пробелах, то есть разделение по пробелам. Если запятая будет наверное это не будет работать, точнее будет слово с запятой. В любом случае спасибо Вам и всем откликнувшимся:ay:
87033


Последний свой снипет поправил, теперь будет находить.
C#:
// Забив переменной
project.Variables["REGEX_TITLE_LIST1"].Value = "Можете вставлять в код переменные уже в синтаксисе";
// Переменную зенно, переносим в C# переменную, чистим от лишних пробелов
string Text = project.Variables["REGEX_TITLE_LIST1"].Value.Trim();

// Вырезаем Регуляркой Нужное
var Res = System.Text.RegularExpressions.Regex.Match(Text, @"^\w+\W+\w+\W+\w+|^\w+\W+\w+|^\w+").Value;

// Возвращаем результат
return Res;
 

Kolokol1

Client
Регистрация
08.06.2018
Сообщения
38
Благодарностей
7
Баллы
8
C#:
project.Variables["REGEX_TITLE_LIST1"].Value = "Можете";

int count = 1; // Сколько слов брать
string result = string.Empty;
string line = project.Variables["REGEX_TITLE_LIST1"].Value.Trim(); // Убираем начальные, конечные пробелы

string[] all_words = line.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); // Разбили по разделителю, удалили пустые строки, если в строке было 2 пробела подряд...
if(all_words.Length >= count){ // Если нужное количество слов есть
    result = string.Join(" ", all_words.Take(count)); // Берем и соединяем через пробел
}
else {
    // Если не нашли указанное количество слов - возвращаем пустое значение
    result = string.Empty;
}
return result;
Этот код вам полностью теперь подошел?
Пока тестим, вроде да
all_words.Length >= count)

Я так понял там как раз равно не хватало
 

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
639
Благодарностей
581
Баллы
93
Умничать может каждый, но не всегда то умничество - является окончательной истинной, поэтому желательно отвечать только за свои предложения, а не чужие.:bt:
ну так что же ты тогда 4 раза свою регулярку отредактировал, прислушавшись к мои подсказкам ?
значит все таки было неправильно у тебя ?
но да же после 4х редактирований - твой код все равно провалится на спецсимволах :D

из темы удаляюсь, ибо тратить время на твою белеберду совсем не хочется ...
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 523
Благодарностей
1 321
Баллы
113
ну так что же ты тогда 4 раза свою регулярку отредактировал, прислушавшись к мои подсказкам ?
Основной код так и остался без редактирования кода и он работает под запрос темы. Не занимайтесь клеветой. Дополнительно человек сказал что ему нужно, я и подстроил под его уточняющий запрос - новый код в новом посте.
У кого больше - меряйтесь, пожалуйста со своими друзьями. Не будьте стервятником.
 
Последнее редактирование:

udder

Client
Регистрация
28.03.2017
Сообщения
618
Благодарностей
128
Баллы
43
C#:
string text = "Привет, как дела, как настроение?";
return string.Join(" ", text.Split().Take(3));
@Ilshakin Подскажите, пожалуйста, как вместо цифры поставить переменную?
У меня где - то ошибка
C#:
return string.Join(" ", text.Split().Take(project.Variables["random_Numb"].Value));
Компиляция кода Ошибка в действии "CS1503" "Argument 2: cannot convert from 'string' to 'int'". [Строка: 2; Cтолбец: 43]
 
Последнее редактирование:

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 523
Благодарностей
1 321
Баллы
113
@Ilshakin Подскажите, пожалуйста, как вместо цифры поставить переменную?
У меня где - то ошибка
C#:
return string.Join(" ", text.Split().Take(project.Variables["random_Numb"].Value));
Компиляция кода Ошибка в действии "CS1503" "Argument 2: cannot convert from 'string' to 'int'". [Строка: 2; Cтолбец: 43]
C#:
string text = "Привет, как дела, как настроение?";
return string.Join(" ", text.Split().Take(Convert.ToInt32(project.Variables["random_Numb"].Value)));
 
  • Спасибо
Реакции: udder

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