sob4o

4. Fake Text Markup Language

Jan 11th, 2014
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.96 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Text.RegularExpressions;
  7.  
  8.  
  9.  
  10.  
  11.  
  12. namespace FTML_TryWithRegex
  13. {
  14. class Program
  15. {
  16. static void Main()
  17. {
  18. string revTag = @"<rev>(?<group>[^<]*)</rev>";
  19. string upper = @"<upper>(?<group>[^<]*)</upper>";
  20. string lower = @"<lower>(?<group>[^<]*)</lower>";
  21. string toggle = @"<toggle>(?<group>[^<]*)</toggle>";
  22. string delTag = @"<del>(?<group>[^<]*)</del>";
  23. // ReadInput();
  24. StringBuilder readInput = new StringBuilder();
  25. ReadAllFTML(readInput);
  26. string input = readInput.ToString();
  27.  
  28.  
  29. int maches = -1;
  30. while (maches != 0)
  31. {
  32. int revCount = Regex.Matches(input, revTag).Count;
  33. if (revCount > 0)
  34. {
  35. input = Regex.Replace(input, revTag, (m => Reverse(m.Groups["group"].Value)));
  36. }
  37. int upperCount = Regex.Matches(input, upper).Count;
  38. if (upperCount > 0)
  39. {
  40. input = Regex.Replace(input, upper, (m => m.Groups["group"].Value.ToUpper()));
  41. }
  42. int lowerCount = Regex.Matches(input, lower).Count;
  43. if (lowerCount > 0)
  44. {
  45. input = Regex.Replace(input, lower, (m => m.Groups["group"].Value.ToLower()));
  46. }
  47. int toggleCount = Regex.Matches(input, toggle).Count;
  48. if (toggleCount > 0)
  49. {
  50. input = Regex.Replace(input, toggle, (m => Toggle(m.Groups["group"].Value)));
  51. }
  52.  
  53. int delCount = Regex.Matches(input, delTag).Count;
  54. if (delCount > 0)
  55. {
  56. input = Regex.Replace(input, delTag, string.Empty);
  57. }
  58.  
  59. maches = delCount + lowerCount + upperCount + toggleCount + revCount;
  60. }
  61. Console.Write(input);
  62. }
  63.  
  64.  
  65. private static string Toggle(string p)
  66. {
  67. StringBuilder result = new StringBuilder();
  68. for (int i = 0; i < p.Length; i++)
  69. {
  70. if (p[i] >= 'A' && p[i] <= 'Z')
  71. {
  72. result.Append(p[i].ToString().ToLower());
  73. }
  74. else if (p[i] >= 'a' && p[i] <= 'z')
  75. {
  76. result.Append(p[i].ToString().ToUpper());
  77. }
  78. else
  79. {
  80. result.Append(p[i]);
  81. }
  82. }
  83. return result.ToString();
  84. }
  85.  
  86. private static void ReadAllFTML(StringBuilder readInput)
  87. {
  88. if (File.Exists(@"C:\Users\Admin\Desktop\Test.txt"))
  89. {
  90.  
  91. Console.SetIn(new StreamReader(@"C:\Users\Admin\Desktop\Test.txt"));
  92.  
  93. }
  94.  
  95.  
  96. int length = int.Parse(Console.ReadLine());
  97. for (int i = 0; i < length; i++)
  98. {
  99. readInput.AppendLine(Console.ReadLine());
  100. }
  101. }
  102. private static void ReadInput()
  103. {
  104. if (File.Exists("test.txt"))
  105. {
  106. Console.SetIn(new StreamReader("test.txt"));
  107. }
  108. }
  109. private static string Reverse(string p)
  110. {
  111. Stack<char> toRev = new Stack<char>();
  112. StringBuilder result = new StringBuilder();
  113.  
  114.  
  115. foreach (char item in p)
  116. {
  117. if (item != '\r')
  118. {
  119. toRev.Push(item);
  120.  
  121. }
  122.  
  123.  
  124. }
  125. foreach (var item in toRev)
  126. {
  127. result.Append(item);
  128. }
  129. return result.ToString();
  130. }
  131. }
  132. }
Add Comment
Please, Sign In to add comment