Как найти гласные буквы в тексте?
Сегодня хочу показать довольно простой способ, с помощью которого можно найти гласные буквы в слове, строке, предложении или каком-нибудь другом фрагменте текста.
И так, представим, что у нас есть строка, которая содержит, к примеру, следующий текст: сегодня 8 апреля 2014 года.
И в качестве задачи нам нужно найти все гласные буквы в приведенной строке.
В языке c# любая строка – это набор символов. Поэтому данную нам строку мы можем представить себе следующим образом:
char [] str = {'с', 'о', 'л', 'н', ... );
Чтобы теперь найти гласные буквы нам нужно всего лишь сравнить каждый элемент данного массива с уже существующим списком гласных букв русского алфавита. Благо таких букв всего десять, поэтому мы можем вручную создать, например список или массив и поместить в него все эти буквы.
string str = "сегодня 8 апреля 2014 года"; List<char> vowelsLellers = new List<char> {'а','е','ё','и','о', 'у','ы','э','ю','я'}; //список найденных букв List<char> foundLellers = new List<char>(); foreach(char ch in str) { if (Char.IsLetter(ch)) { if (vowelLeller.Contains(ch)) { foundLeller.Add(ch); } } }
Сначала с помощью метода IsLetter проверяем, является ли текущий символ — буквой. После чего с помощью метода Contains определяем, содержится ли данный символ в списке гласных букв.
В данной проверке не учитывается различие в регистре букв. Например, если сейчас в слове апрель сделать первую букву заглавной, то метод Contains посчитает, что данного символа нет среди гласных букв. Поэтому если Вам требуется учитывать оба регистра, то тогда необходимо воспользоваться методом ToLowerInvariant, например:
foreach(char ch in str.ToLowerInvariant())
Так же вместо цикла Вы можете воспользоваться лямбда выражением, например:
foundLellers = str.Where(x => Char.IsLetter(x) & vowelsLellers.Contains(x)).ToList();
результат
Читайте также: