Ввести две строки символов и заменить слова - 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;
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д