using System.Collections.Generic;
public static void Main()
public static void toddmoTime(){
foreach (var part in getParts("Category A|Category A > Sub Category 1|Category B|Category C|Category C > Sub Category 2"))
Console.WriteLine("TEST 2");
foreach (var part in getParts("Category A > THIS IS DATA IS REDUNDANT|Category A > Sub Category 1 > THIS IS DATA IS REDUNDANT|Category A > Sub Category 1 > Sub Sub Category 1|Category A > Sub Category 1 > Sub Sub Category 2"))
public static List<string> getParts(string stringToParse)
var parts = stringToParse.Split('|').Select(part => part.Trim());
return parts.Where(part => !parts.Any(comparePart => part != comparePart && comparePart.StartsWith(part))).ToList();
public static void nosikTime(){
foreach (var part in Nosik("Category A|Category A > Sub Category 1|Category B|Category C|Category C > Sub Category 2"))
Console.WriteLine("TEST 2");
foreach (var part in Nosik("Category A > THIS IS DATA IS REDUNDANT|Category A > Sub Category 1 > THIS IS DATA IS REDUNDANT|Category A > Sub Category 1 > Sub Sub Category 1|Category A > Sub Category 1 > Sub Sub Category 2"))
public static List<string> Nosik(string stringToParse)
List<string> firstSplitResults = stringToParse.Split('|').Select(p => p.Trim()).ToList();
for (int i = 0; i < firstSplitResults.Count; i++)
int occCount = (stringToParse.Length - stringToParse.Replace(firstSplitResults[i], "").Length) / firstSplitResults[i].Length;
firstSplitResults.RemoveAt(i);
return firstSplitResults;