Посчитать количество слов в тексте, которые заканчиваются на гласную букву - C#
Формулировка задачи:
С клавиатуры вводится строка. Составить программу, которая подсчитывает количество слов в тексте, которые заканчиваются на гласную букву; выводит на экран все слова, длина которых меньше пяти символов; удаляет все слова, которые содержат хотя бы одну латинскую букву.
Решение задачи: «Посчитать количество слов в тексте, которые заканчиваются на гласную букву»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
class Program
{
static void Main(string[] args)
{
string text = Console.ReadLine();
int endsWithVowel = 0;
var shortWords = new List<string>();
string alteredText = text;
foreach (Match match in Regex.Matches(text, @"(\p{Lu}|\p{Ll})+"))
{
string word = match.Value;
if (EndsWithVowel(word))
endsWithVowel++;
if (IsShort(word))
shortWords.Add(word);
if (NeedToRemove(word))
{
alteredText = Regex.Replace(alteredText, @"\b" + word + @"\b", "");
}
}
Console.WriteLine("Слов, заканчивающихся на гласную: " + endsWithVowel);
Console.WriteLine("Слова, которые короче пяти символов:");
foreach (var word in shortWords)
Console.WriteLine(word);
Console.WriteLine("Текст после удаления слов, содержащих латинские буквы:");
Console.WriteLine(alteredText);
Console.ReadLine();
}
static string vowels = "aoueiаеёиоуыэюя";
static bool IsVowel(char ch)
{
return vowels.IndexOf(ch) != -1;
}
static bool EndsWithVowel(string word)
{
return IsVowel(word[word.Length - 1]);
}
static int maxLength = 4;
static bool IsShort(string word)
{
return word.Length <= maxLength;
}
static bool NeedToRemove(string word)
{
var match = Regex.Match(word, @"([a-z]|[A-Z])");
return match.Success;
}
}