Как обрезать текст по заданному количеству слов или пробелов?

udder

Client
Регистрация
28.03.2017
Сообщения
618
Благодарностей
128
Баллы
43
По поиску не нашел, везде рассматривается "обрезание" по количеству символов через regex .{0,10}

Меня интересует как обрезать текст после третьего слова, пример предложения
Привет, как дела, как настроение?
На выходе, должно остаться Привет, как дела,
я так понимаю нужно как то к пробелам привязку делать
 

Nevep

Новичок
Регистрация
25.09.2021
Сообщения
2
Благодарностей
5
Баллы
3
/([^\s]+\s[^\s]+\s[^\s]+)/
 
  • Спасибо
Реакции: udder

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 596
Благодарностей
1 014
Баллы
113
В лист - разделитель - пробел.
Потом с листа объединяешь сколько позиций ннадо :-)
На C# - вообще одна строка, но я не рублю в нём )
 
  • Спасибо
Реакции: udder

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
639
Благодарностей
581
Баллы
93
C#:
string text = "Привет, как дела, как настроение?";
return string.Join(" ", text.Split().Take(3));
 
  • Спасибо
Реакции: udder

udder

Client
Регистрация
28.03.2017
Сообщения
618
Благодарностей
128
Баллы
43
Большое всем спасибо что откликнулись. В чате телеграмма Зенно дали еще такой длинный вариант, тоже работает
C#:
String my_string = "Привет, как дела, как настроение?";
int count_words = 3;
 
String[] split_string = my_string.Split(' ');
int len = split_string.Length;

if (len < count_words)
{
    throw new Exception("Слов меньше указанного значения");
}

String result_string = String.Empty;
String replace_string = String.Empty;

for (int i = count_words; i < len; i++)
{
    replace_string += split_string[i] + " ";
}

result_string = my_string.Replace(replace_string.Trim(), "");

Console.WriteLine("Удалено: " + replace_string);
return result_string;
Ну иногда больше трех слов, нужно через переменную задавать, но спасибо за регулярку))
 

udder

Client
Регистрация
28.03.2017
Сообщения
618
Благодарностей
128
Баллы
43
C#:
string text = "Привет, как дела, как настроение?";
return string.Join(" ", text.Split().Take(3));
Элегантно, спасибо маэстро, забрал к себе и применил. Спасибо за ваш опыт и желание помогать. Ценю.
 
  • Спасибо
Реакции: Ilshakin

udder

Client
Регистрация
28.03.2017
Сообщения
618
Благодарностей
128
Баллы
43
@Ilshakin Привет. Как подправить сниппет, чтобы получить количество слов в предложении? :-)
Обрезать текст по количеству слов:
string text = "Привет, как дела, как настроение?";
return string.Join(" ", text.Split().Take(3));
 

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
639
Благодарностей
581
Баллы
93
  • Спасибо
Реакции: NICOLAS Christophe и udder

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