Ввести две строки символов и заменить слова - 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;
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы