Ввести две строки символов и заменить слова - C#
Формулировка задачи:
Задание для консольного приложения: Ввести две строки символов и заменить каждое слово, начинающееся с гласной буквы первой строки на слово, начинающееся с согласной буквы во второй строке. Вывести полученный результат.
Решение задачи: «Ввести две строки символов и заменить слова»
textual
Листинг программы
using System; using System.Linq; using System.Text.RegularExpressions; namespace ConsoleApplication10 { class Program { static string toReplace = ""; static int count = 0; static void Main(string[] args) { //Console.WriteLine("Введите строку 1: ");//раскомментировать //string first = Console.ReadLine(); //Console.WriteLine("Введите строку 2: "); //string second = Console.ReadLine(); string wordBeforeReplace; /*debug info*/ string first = "в этой строке изменить первую букву, если она гласная"; string second = "из этой строки взять первую согласную!"; /**/ string firstReplaced = first; //сначала надо убрать знаки препинания и прочий мусор Regex newReg = new Regex(@"[^0-9a-zа-я ]", RegexOptions.IgnoreCase); MatchCollection matches = newReg.Matches(first); foreach (Match mat in matches) { first = first.Replace(mat.ToString(), "").ToLower();//сразу приводим к нижнему регистру second = second.Replace(mat.ToString(), "").ToLower(); } //бъём в массив, разделитель слов теперь четко " " string[] arFirst = first.Split(' '); string[] arSecond = second.Split(' '); //Во втором массиве надо найти первое слово, которое начинаетя с согласной foreach (string s in arSecond) { if (isntStartWithVowel(s, true)) { if (count == 1) break; } } //заменяем for (int i = 0; i < arFirst.Length; i++ ) { if (isntStartWithVowel(arFirst[i], false)) { wordBeforeReplace = arFirst[i]; arFirst[i] = toReplace + arFirst[i].Substring(1); firstReplaced = firstReplaced.Replace(wordBeforeReplace, arFirst[i]); } } Console.WriteLine("Согласная: {0}", toReplace); Console.WriteLine("Строка 1 после замены: {0}", firstReplaced); Console.ReadKey(); } static bool isntStartWithVowel(string checkedAr, bool fromSecond) { //гласные русские и латинские char[] letter = { 'a', 'e', 'i', 'o', 'u', 'а', 'е', 'ё', 'и', 'о', 'у', 'ы', 'э', 'ю', 'я' }; char[] lett = checkedAr.ToCharArray(); if(letter.Contains(lett[0])) return true; if (fromSecond) { toReplace = lett[0].ToString(); count += 1; } return false; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д