Advertisement
Guest User

Untitled

a guest
Oct 17th, 2014
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.99 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Globalization;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Windows.Forms;
  8.  
  9. namespace Playground
  10. {
  11.     class Program
  12.     {
  13.         public static string PostTitle = "201308010000";
  14.         public static string Post = @"5F2CF05FDE14455D 796FA727A1890D91 ED73AE2F62338A00 CDF040CC43958FBD 7B110730D0119F42 96B7B9175D1AB8BF A98A568A8FF52DF8 CA3AF3DAF9DB5FC7 24DF8A7B532D0D72 671D1F198D6A623D 5247B34208A68048 4933CC1964720AF9 90530505CF632CE4 73D5E7C7651D80FC CFB067E7279FC985 AA1415D1727DCE3B 98E51DB50D8573D4 8C5528A3D58F84BF 80C341B033DD7453 BD23B3A5E7532DD9 4763CD5F3D5606E4 82FF9B8E660ADCF3 AABB379F0AAC8873 06B3E1D7E19A1A32 D37D4EA23A96952A 6AC9A68978D09C5D 5A016A0E6BBA7CB6 E2B9EE1BB00B0F56 0F49C7EE1EE95AA4 390C78C4F94C242A 02E05C39B5F6B48A 040D4C05CB4A294D 615F7E05EDA7A6A5 B37950B937E5A434 0C02A911CF27B570 61D32B0C340CCF43 AD477E84B7694F9A 8BDDE34331E66850 BA5228271D4C026E C7B3DA4F63135C9F 3BEC8804ED81998F 9D0B3788308101D0 192FB265B2D0F1DE 598C7CD1840E63EC 318EFAD3C5152173 6308C86440846474 CBFACD1FE80A98D7 66232836FA2296D7 C2D779E9E87F71DB 19A3AE0EB0E68D16 F1A484FEE0D41680 04D3B8D40D5AE9B6 9C1C63A4C2E386D7 FA0B2D7343A116FD CE148B78E0372F44 CFDA1D9AAF38CC1A 2D50C1587E7BB49A 55CF7CDDE8A92D8B EC6F1D9FA58144F7 B7DA36983A744F90 7D6FF3F86C2ED166 81D1CB6908586F3E 8723B1F630AC9665 6B0408E499C1C185 6D2123514CBBDA9D DF3C76132BF7DBE4 40764D3230ACF015 C72BF2E94A0447BF 068D98243D4E94DF 0ED319830E6FFDD5 C59EF1E577CE21B5 CE496EFC82192A55 F8D7DD281EB30E00 92DC70E261F7DFDC 59E4DBB7E970EC72 59E7D88C0BF3C405 FE757CD2D86D9297 A70759D007AE9B49 E7AC4243BDEE8A71 74A3C6200029E0D6 BE8DFE079DB4F85A 489849C9104EE26A 604D70CE44D3531F 620452F6B1CDA691 8D624843B30230A8 69EFBA111B19D1E3 37B572F5548C6670 3E1E669CB6C4990E CA0B96C3C078CE47 8D2825150A0711D6 4DE66988B23EEFBB A7B0EFEBCBAC0554 B292DB50CCD1A6D6 F0B168570AF6183B 69E23F77A7EBDC0A 577AED78C76F3087 B490AA2601F12294 E687134DA7B88DD2 CCB0C362E6051BF1 FA7359DBBDC80FB3 C127CE359417DA06 3870A75C36A6D666 7F04446C7A6AEA9A DFCBB32A2E069A3C 142E9A788162CDDF 99EF94778CEFE424 8B634AECCB376F27 1E11C6680CBBF150 248BCE67D3684FE4 A5CA8547F28E9A74 F02013A64AF99C00 40D15E9D1F53B028 A6940FFEDA7970DB 59E1693F69515D94 4850DC269873ADBA 18A5187412D92BE3 BD1FF353E1CEB266 43213A4156E877ED C71C0A99C3B01702 CEAE2C5B133AC7B0 173D8D2B4A95FECC F0B0745BECFB6FEF 4D3443BA666B21F5 9C7FD2522202AEF3 61A88890FC2E821E EBA4CC67693A576F ED77C07B9AED185A 5FA986F38EEAAB47 F6A69DA3A8D0D177 14C46E7B2575C4F6 F3455B94EFC376D6 0F3E95CFFF52CAE7 78204C0589B308CF F221593EA28A5CA1 C3802EF08CC8A98D 17970B6CE8F43518 B82826C711C51380 9D4342BCF9BBDC82 2EC3E247E8BBFDD2 74212521CFFD9A8C EBA3A2AE902A0B8C CF20282594FA2AC7 851956A6BCF959F3 35D1AE4C71C0FC2A E47FF0DD394A0D6B 1CA72B8BA1D23618 B9591C349B651C06 C6663B3E26365372 DB4FF78A75FE6573 73B93DE3C3838510 0789D1ABB22BE542 98CA41E280620DEA 57D124AD2754DEEA 58C64FA2900CD7A3 017E359FCCED47F0 8AEE8F08A0239E9E 5ABCD592C84A404E B1DB9FB958C5FBAB D2D03351B66302BF EDDD8283AACB074E 7A6B161F55CE510C E71F65725F1FCBC7 6449E776C09C61CC D7FF1F8A71CFF17A 0B94C7CEC89BB839 4A713CB0BCEB8C59 19A4F9027EB86F71 74C1F9716C5848A2 B0143DFB69585572 BF4FE4126B8EEDE0 0FAAE4A306452447 C0431E1EC423F0BC D85E2A80C944C92F 9A11B3469FB6A0B2 929487A9EC9A7FEA 097939BED9A2ED7D 0FECF3274B13762C FC5D526B49B6A391 3B983E1CC0B977F6 8F42501227005CA8 504AE684D797E58F 7AF9FF741FBF8E24 25E7172E04574078 56C385CF610856DB D6F9F3E31BFA69DF 05AC5F192835C423 79DA66B299C817E5 63A4B725A43D4953 DE9BECC4EFEC0069 F90A1008A4D26BDF 3A8A5A09CEEAE2E0 6367EDB65D71F9DF 72FA3E93F42F65C9";
  15.  
  16.         [STAThread]
  17.         static void Main(string[] args)
  18.         {
  19.             //Sort out some of the common inconsistencies in the files
  20.             Post = Post.Replace("\r\n", " ");
  21.             if (!Post.Contains(" "))
  22.             {
  23.                 var spacedPost = "";
  24.                 for (var i = 0; i < Post.Length; i++)
  25.                 {
  26.                     spacedPost += Post[i];
  27.                     if (i < (Post.Length - 1))
  28.                         spacedPost += " ";
  29.                 }
  30.                 Post = spacedPost;
  31.             }
  32.             try
  33.             {
  34.                 var guidSplit = FindGuidSplits(Post);
  35.                 var splitBySpace = SplitStringBySpaces(Post).ToList();
  36.                 var parsed = new Queue<Guid>();
  37.                 var nonGuids = new List<string>();
  38.                 while (splitBySpace.Any() && splitBySpace.Count >= guidSplit)
  39.                 {
  40.                     var combined = splitBySpace.Take(guidSplit).Aggregate(CombineStrings);
  41.                     Guid output;
  42.                     Guid.TryParse(combined, out output);
  43.                     if (output != Guid.Empty)
  44.                         parsed.Enqueue(output);
  45.                     else
  46.                         nonGuids.Add(combined);
  47.                     splitBySpace = splitBySpace.Skip(guidSplit).ToList();
  48.                 }
  49.                 var results = GetResults(parsed, nonGuids, splitBySpace, guidSplit, PostTitle);
  50.                 Console.WriteLine(results);
  51.                 Clipboard.SetText(results);
  52.             }
  53.             catch (FormatException formatException)
  54.             {
  55.                 Console.WriteLine("Could not find a GUID inside the Post");
  56.             }
  57.             Console.ReadLine();
  58.         }
  59.  
  60.         public static string GetResults(Queue<Guid> parsed, List<string> nonGuids, List<string> splitBySpace, int guidSplit, string postTitle)
  61.         {
  62.             var sb = new StringBuilder();
  63.             var title = IsDate(postTitle) ? DateTime.ParseExact(postTitle, "yyyyMMddHHmm", CultureInfo.InvariantCulture).ToString() : postTitle;
  64.             sb.AppendLine("Title is date: " + IsDate(postTitle));
  65.             sb.AppendLine("Title as date: " + title);
  66.             sb.AppendLine("Count of Parsed GUIDs: " + parsed.Count);
  67.             sb.AppendLine("Parsed GUIDs: ");
  68.             foreach (var guid in parsed)
  69.                 sb.AppendLine(guid.ToString());
  70.             sb.AppendLine("Count of non-GUIDs: " + nonGuids.Count);
  71.             foreach (var nonGuid in nonGuids)
  72.                 sb.AppendLine(nonGuid);
  73.             sb.AppendLine("Remainder: " + (splitBySpace.Any() ? splitBySpace.Aggregate(CombineStrings) : "0"));
  74.             if (splitBySpace.Any())
  75.                 sb.AppendLine("Remainder is partial GUID: " + IsPartialGuid(splitBySpace, guidSplit));
  76.             return sb.ToString();
  77.         }
  78.  
  79.         public static string CombineStrings(string a, string b)
  80.         {
  81.             return a + b;
  82.         }
  83.  
  84.         public static bool IsPartialGuid(List<string> chunks, int fullSize)
  85.         {
  86.             while (chunks.Count < fullSize)
  87.                 chunks.Add(chunks[0]);
  88.             var combined = chunks.Aggregate(CombineStrings);
  89.             return IsGuid(combined);
  90.         }
  91.  
  92.         public static IEnumerable<string> SplitStringBySpaces(string inputWithSpaces)
  93.         {
  94.             return inputWithSpaces.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries);
  95.         }
  96.  
  97.         public static bool IsGuid(string candidate)
  98.         {
  99.             Guid output;
  100.             Guid.TryParse(candidate, out output);
  101.             return output != Guid.Empty;
  102.         }
  103.  
  104.         public static bool IsDate(string candidate)
  105.         {
  106.             DateTime output;
  107.             DateTime.TryParseExact(candidate, "yyyyMMddHHmm", CultureInfo.InvariantCulture, DateTimeStyles.None, out output);
  108.             return output != DateTime.MinValue;
  109.         }
  110.  
  111.         public static int FindGuidSplits(string post, int splitBy = 1)
  112.         {
  113.             var splitBySpace = SplitStringBySpaces(post).ToList();
  114.             if (splitBy > splitBySpace.Count())
  115.                 throw new FormatException("No GUID could be determined");
  116.             var combiner = "";
  117.             for (var i = 0; i < splitBy; i++)
  118.             {
  119.                 combiner += splitBySpace[i];
  120.             }
  121.             if (IsGuid(combiner))
  122.                 return splitBy;
  123.             return FindGuidSplits(post, ++splitBy);
  124.         }
  125.     }
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement