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

  • Автор темы Автор темы udder
  • Дата начала Дата начала

udder

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

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

На выходе, должно остаться Привет, как дела,
я так понимаю нужно как то к пробелам привязку делать
 
/([^\s]+\s[^\s]+\s[^\s]+)/
 
  • Спасибо
Реакции: udder
В лист - разделитель - пробел.
Потом с листа объединяешь сколько позиций ннадо :)
На C# - вообще одна строка, но я не рублю в нём )
 
  • Спасибо
Реакции: udder
C#:
Развернуть Свернуть Копировать
string text = "Привет, как дела, как настроение?";
return string.Join(" ", text.Split().Take(3));
 
  • Спасибо
Реакции: udder
Большое всем спасибо что откликнулись. В чате телеграмма Зенно дали еще такой длинный вариант, тоже работает
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;
/([^\s]+\s[^\s]+\s[^\s]+)/
Ну иногда больше трех слов, нужно через переменную задавать, но спасибо за регулярку))
 
C#:
Развернуть Свернуть Копировать
string text = "Привет, как дела, как настроение?";
return string.Join(" ", text.Split().Take(3));
Элегантно, спасибо маэстро, забрал к себе и применил. Спасибо за ваш опыт и желание помогать. Ценю.
 
  • Спасибо
Реакции: Ilshakin
@Ilshakin Привет. Как подправить сниппет, чтобы получить количество слов в предложении? :)
Обрезать текст по количеству слов:
Развернуть Свернуть Копировать
string text = "Привет, как дела, как настроение?";
return string.Join(" ", text.Split().Take(3));
 
  • Спасибо
Реакции: NICOLAS Christophe и udder

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