elena1234

PostOffice*-howToGetMatchedGroup (RegEx)

Nov 29th, 2020 (edited)
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.66 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text.RegularExpressions;
  4.  
  5. namespace PostOffice
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             string[] input = Console.ReadLine().Split("|");
  12.             var dictionaryLetterAndWordLength = new Dictionary<char, int>();
  13.             string firstPart = input[0];
  14.             string secondPart = input[1];
  15.             string thirdPart = input[2];
  16.  
  17.             Regex regexForTheLettersInFirstPart = new Regex(@"(\$|#|%|\*|&)(?<capitalLetters>[A-Z]+)(\1)");
  18.             MatchCollection matchesCapitalLettersInTheFirstPart = regexForTheLettersInFirstPart.Matches(firstPart);
  19.             Regex regexForTheDigitsInTheSecondPart = new Regex(@"([0-9][0-9]):([0-9][0-9])");
  20.             MatchCollection matchesDigitsInTheSecondPart = regexForTheDigitsInTheSecondPart.Matches(secondPart);
  21.             string[] wordsInTheThirdPart = thirdPart.Split();
  22.  
  23.             if (regexForTheLettersInFirstPart.IsMatch(firstPart) && regexForTheDigitsInTheSecondPart.IsMatch(secondPart))
  24.             {
  25.                 string cappitalLetter = matchesCapitalLettersInTheFirstPart[0].Groups["capitalLetters"].Value; //NB!
  26.                 foreach (var letter in cappitalLetter)
  27.                 {
  28.                     foreach (Match digits in matchesDigitsInTheSecondPart)
  29.                     {
  30.                         string firstDigit = digits.Groups[1].Value;
  31.                         int firstLetterInt = int.Parse(firstDigit);
  32.                         char firstLetterChar = (char)firstLetterInt;
  33.                         string wordLength = digits.Groups[2].Value;
  34.                         int wordLengthInt = int.Parse(wordLength);
  35.  
  36.                         if (letter == firstLetterChar)
  37.                         {
  38.                             dictionaryLetterAndWordLength[letter] = wordLengthInt + 1;
  39.                             break;
  40.                         }
  41.                     }
  42.                 }
  43.  
  44.                 foreach (var kvp in dictionaryLetterAndWordLength)
  45.                 {
  46.                     char letter = kvp.Key;
  47.                     int wordLength = kvp.Value;
  48.  
  49.                     foreach (string word in wordsInTheThirdPart)
  50.                     {
  51.                         char currentFirstLetter = word[0];
  52.                         int currentWordLength = word.Length;
  53.  
  54.                         if (letter == currentFirstLetter && wordLength == currentWordLength)
  55.                         {
  56.                             Console.WriteLine(word);
  57.                             break;
  58.                         }
  59.                     }
  60.                 }
  61.             }
  62.         }
  63.     }
  64. }
Add Comment
Please, Sign In to add comment