Program.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. Console.WriteLine("Press any key to exit (external wait)...");
  20. Console.ReadKey();
  21. }
  22. static string[] Split(string input, string valueBracket, string[] separators)
  23. {
  24. var result = new List<string>();
  25. var trimedInput = input.Trim();
  26. if (string.IsNullOrEmpty(trimedInput))
  27. return result.ToArray();
  28. var cValueBracked = valueBracket.ToCharArray().First();
  29. var cSeparators = separators.Select(x => x.ToCharArray().First());
  30. var nIndexStart = 0;
  31. var nIndexEnd = 0;
  32. var isInsideBracked = false;
  33. int offset = 0;
  34. for (offset = 0; offset < trimedInput.Length; offset++)
  35. {
  36. var current = trimedInput[offset];
  37. // current | isInside | Result
  38. // 1 1 0
  39. // 1 0 1
  40. // 0 1 1
  41. // 0 0 0
  42. isInsideBracked = current == cValueBracked ^ isInsideBracked;
  43. if (isInsideBracked)
  44. continue;
  45. if (cSeparators.Contains(current))
  46. {
  47. nIndexEnd = offset;
  48. result.Add(trimedInput.Substring(nIndexStart,nIndexEnd - nIndexStart));
  49. nIndexStart = nIndexEnd;
  50. isInsideBracked = false;
  51. }
  52. }
  53. if (offset>nIndexStart)
  54. result.Add(trimedInput.Substring(nIndexStart,offset - nIndexStart));
  55. return result.Where(x => !string.IsNullOrEmpty(x.Trim())).ToArray();
  56. }
  57. }
  58. }