Program.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Reflection;
  5. using Quadarax.Foundation.QConsole.Configuration;
  6. namespace Quadarax.Foundation.QConsole.DevBench
  7. {
  8. class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. //var input = "-c:\"fofo aa\" -new:12 -b:True";
  13. //var result = Split(input, "\"", new[] {" ", "-"});
  14. //Console.ReadLine();
  15. var config = new StartupConfiguration("MyTestConsole", Version.Parse("1.0.0")).EnableDebugMode();
  16. config.CommandDefinitionAssebmly = Assembly.GetEntryAssembly();
  17. var console = new Engine(config, args);
  18. console.Start();
  19. }
  20. static string[] Split(string input, string valueBracket, string[] separators)
  21. {
  22. var result = new List<string>();
  23. var trimedInput = input.Trim();
  24. if (string.IsNullOrEmpty(trimedInput))
  25. return result.ToArray();
  26. var cValueBracked = valueBracket.ToCharArray().First();
  27. var cSeparators = separators.Select(x => x.ToCharArray().First());
  28. var nIndexStart = 0;
  29. var nIndexEnd = 0;
  30. var isInsideBracked = false;
  31. int offset = 0;
  32. for (offset = 0; offset < trimedInput.Length; offset++)
  33. {
  34. var current = trimedInput[offset];
  35. // current | isInside | Result
  36. // 1 1 0
  37. // 1 0 1
  38. // 0 1 1
  39. // 0 0 0
  40. isInsideBracked = current == cValueBracked ^ isInsideBracked;
  41. if (isInsideBracked)
  42. continue;
  43. if (cSeparators.Contains(current))
  44. {
  45. nIndexEnd = offset;
  46. result.Add(trimedInput.Substring(nIndexStart,nIndexEnd - nIndexStart));
  47. nIndexStart = nIndexEnd;
  48. isInsideBracked = false;
  49. }
  50. }
  51. if (offset>nIndexStart)
  52. result.Add(trimedInput.Substring(nIndexStart,offset - nIndexStart));
  53. return result.Where(x => !string.IsNullOrEmpty(x.Trim())).ToArray();
  54. }
  55. }
  56. }