public static void Main()
var test = Metadata.Parse("!!!EGSTAMP:orgid:labelid;S=100;DESCRIPTION=desc!!!");
var test2 = Metadata.Parse("!!!EGSTAMP::labelid;DESCRIPTION=desc!!!");
var test3 = Metadata.Parse("!!!EGSTAMP::labelid;S=12345;TEST=should oognore;DESCRIPTION=desc!!!");
Console.WriteLine ("Parse complete.");
public string OrganizationId { get; set; }
public string LabelId { get; set; }
public int Sensitivity { get; set; }
public string Description { get; set; }
public static Metadata Parse(string input)
throw new FormatException("Invalid metadata");
if (!input.StartsWith("!!!EGSTAMP:"))
throw new FormatException("Invalid metadata");
var tokens = input.Substring(11).TrimEnd('!').Split(';');
foreach (var token in tokens)
if (token.Contains (":"))
var parts = token.Split(':');
md.OrganizationId = parts[0];
else if (token.Contains("="))
var parts = token.Split('=');
if (string.Equals(parts[0], "s", StringComparison.OrdinalIgnoreCase))
md.Sensitivity = int.Parse(parts[1]);
else if (string.Equals(parts[0], "description", StringComparison.OrdinalIgnoreCase))
md.Description = parts[1];