Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Text.RegularExpressions;
- using System.IO;
- namespace FTML
- {
- class FTML
- {
- static string ReverseOneLineString(string str)
- {
- StringBuilder output = new StringBuilder();
- for (int i = str.Length - 1; i >= 0; i--)
- {
- output.Append(str[i]);
- }
- return output.ToString();
- }
- static StringBuilder Reverse(StringBuilder str)
- {
- if (str.ToString().Contains(Environment.NewLine.ToString()))
- {
- StringBuilder result = new StringBuilder();
- string[] substrings = str.ToString().Split(new string[] { Environment.NewLine.ToString() }, StringSplitOptions.RemoveEmptyEntries);
- for (int i = substrings.Length - 1; i >= 0; i--)
- {
- result.Append(ReverseOneLineString(substrings[i]));
- if (i > 0)
- {
- result.Append(Environment.NewLine.ToString());
- }
- }
- return result;
- }
- else
- {
- return new StringBuilder( ReverseOneLineString(str.ToString()));
- }
- }
- static StringBuilder Delete(StringBuilder str)
- {
- return new StringBuilder("");
- }
- static StringBuilder Toggle(StringBuilder str)
- {
- string s = str.ToString();
- StringBuilder result = new StringBuilder(str.Length);
- for (int i = 0; i < s.Length; i++)
- {
- if (char.IsUpper(s[i]))
- {
- result.Append(s[i].ToString().ToLower());
- }
- else
- {
- result.Append(s[i].ToString().ToUpper());
- }
- }
- return result;
- }
- static StringBuilder ToUpper(StringBuilder str)
- {
- string s = str.ToString().ToUpper();
- return new StringBuilder(s);
- }
- static StringBuilder ToLower(StringBuilder str)
- {
- string s = str.ToString().ToLower();
- return new StringBuilder(s);
- }
- static void Main(string[] args)
- {
- string pattern = @"(?<currentTag>[<]\w+[>])(?<content>[^<]*)(?<closingTag>[<]{1}[//]{1}\w+[>]{1})";
- int n = int.Parse(Console.ReadLine());
- StringBuilder text = new StringBuilder();
- for (int i = 0; i < n; i++)
- {
- text.AppendLine(Console.ReadLine());
- }
- //for (int i = 0; i < n; i++)
- {
- Match match = Regex.Match(text.ToString(), pattern);
- while (match.Success)
- {
- StringBuilder replacement = new StringBuilder();
- if (match.Groups["currentTag"].ToString() == "<rev>")
- {
- replacement = Reverse(new StringBuilder(match.Groups["content"].ToString()));
- }
- else if (match.Groups["currentTag"].ToString() == "<upper>")
- {
- replacement = ToUpper(new StringBuilder(match.Groups["content"].ToString()));
- }
- else if (match.Groups["currentTag"].ToString() == "<lower>")
- {
- replacement = ToLower(new StringBuilder(match.Groups["content"].ToString()));
- }
- else if (match.Groups["currentTag"].ToString() == "<toggle>")
- {
- replacement = Toggle(new StringBuilder(match.Groups["content"].ToString()));
- }
- else if (match.Groups["currentTag"].ToString() == "<del>")
- {
- replacement = Delete(new StringBuilder(match.Groups["content"].ToString()));
- }
- text.Replace(match.Groups["currentTag"].ToString() + match.Groups["content"].ToString() + match.Groups["closingTag"].ToString(), replacement.ToString());
- match = Regex.Match(text.ToString(), pattern);
- //match = match.NextMatch();
- }
- }
- Console.WriteLine(text);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement