Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Text.RegularExpressions;
- namespace FTML_TryWithRegex
- {
- class Program
- {
- static void Main()
- {
- string revTag = @"<rev>(?<group>[^<]*)</rev>";
- string upper = @"<upper>(?<group>[^<]*)</upper>";
- string lower = @"<lower>(?<group>[^<]*)</lower>";
- string toggle = @"<toggle>(?<group>[^<]*)</toggle>";
- string delTag = @"<del>(?<group>[^<]*)</del>";
- // ReadInput();
- StringBuilder readInput = new StringBuilder();
- ReadAllFTML(readInput);
- string input = readInput.ToString();
- int maches = -1;
- while (maches != 0)
- {
- int revCount = Regex.Matches(input, revTag).Count;
- if (revCount > 0)
- {
- input = Regex.Replace(input, revTag, (m => Reverse(m.Groups["group"].Value)));
- }
- int upperCount = Regex.Matches(input, upper).Count;
- if (upperCount > 0)
- {
- input = Regex.Replace(input, upper, (m => m.Groups["group"].Value.ToUpper()));
- }
- int lowerCount = Regex.Matches(input, lower).Count;
- if (lowerCount > 0)
- {
- input = Regex.Replace(input, lower, (m => m.Groups["group"].Value.ToLower()));
- }
- int toggleCount = Regex.Matches(input, toggle).Count;
- if (toggleCount > 0)
- {
- input = Regex.Replace(input, toggle, (m => Toggle(m.Groups["group"].Value)));
- }
- int delCount = Regex.Matches(input, delTag).Count;
- if (delCount > 0)
- {
- input = Regex.Replace(input, delTag, string.Empty);
- }
- maches = delCount + lowerCount + upperCount + toggleCount + revCount;
- }
- Console.Write(input);
- }
- private static string Toggle(string p)
- {
- StringBuilder result = new StringBuilder();
- for (int i = 0; i < p.Length; i++)
- {
- if (p[i] >= 'A' && p[i] <= 'Z')
- {
- result.Append(p[i].ToString().ToLower());
- }
- else if (p[i] >= 'a' && p[i] <= 'z')
- {
- result.Append(p[i].ToString().ToUpper());
- }
- else
- {
- result.Append(p[i]);
- }
- }
- return result.ToString();
- }
- private static void ReadAllFTML(StringBuilder readInput)
- {
- if (File.Exists(@"C:\Users\Admin\Desktop\Test.txt"))
- {
- Console.SetIn(new StreamReader(@"C:\Users\Admin\Desktop\Test.txt"));
- }
- int length = int.Parse(Console.ReadLine());
- for (int i = 0; i < length; i++)
- {
- readInput.AppendLine(Console.ReadLine());
- }
- }
- private static void ReadInput()
- {
- if (File.Exists("test.txt"))
- {
- Console.SetIn(new StreamReader("test.txt"));
- }
- }
- private static string Reverse(string p)
- {
- Stack<char> toRev = new Stack<char>();
- StringBuilder result = new StringBuilder();
- foreach (char item in p)
- {
- if (item != '\r')
- {
- toRev.Push(item);
- }
- }
- foreach (var item in toRev)
- {
- result.Append(item);
- }
- return result.ToString();
- }
- }
- }
Add Comment
Please, Sign In to add comment