using System; using System.Collections.Generic; using System.Text; namespace Apewer.Run { class Config { public Config() { Test(typeof(Config).FullName, ""); Test(typeof(Config).FullName, ","); Test(typeof(Config).FullName, "."); } void Test(string input, string separator) { var split = Split_Agent(input, separator); Console.Write(input + " | " + separator + " | "); Console.WriteLine(string.Join(" - ", split)); } public static string[] Split_Agent(string @this, params string[] saparators) { var text = @this; if (string.IsNullOrEmpty(text)) return new string[0]; if (saparators == null || saparators.LongLength < 1L) return new string[1] { text }; var ss = new List(); foreach (var s in saparators) { if (string.IsNullOrEmpty(s)) continue; if (ss.Contains(s)) continue; ss.Add(s); } var parts = new List(); var length = 0; var sample = text; var saparator = null as string; while (true) { if (sample.Length < 0) { parts.Add(sample); break; } length = -1; saparator = null; foreach (var s in ss) { var i = sample.IndexOf(s); if (i > -1) { length = i; saparator = s; break; } } if (saparator == null) { parts.Add(sample); break; } var part = sample.Substring(0, length); parts.Add(part); sample = sample.Substring(length + saparator.Length); } return parts.ToArray(); } public static string[] Split(string argExpression, string argSeparator) { var expression = argExpression; var separator = argSeparator; if (string.IsNullOrEmpty(expression)) return new string[] { "" }; if (string.IsNullOrEmpty(separator)) return new string[] { expression }; if (separator.Length > expression.Length) return new string[] { expression }; var list = new List(); var position = 0; var total = expression.Length; var length = separator.Length; var cell = new StringBuilder(); while (position < total) { var read = (position + length < total) ? expression.Substring(position, length) : expression.Substring(position); if (read == separator) { if (cell.Length > 0) { list.Add(cell.ToString()); #if NET20 cell = new StringBuilder(); #else cell.Clear(); #endif } else { list.Add(""); } position += length; } else { cell.Append(expression[position]); position += 1; } if (position >= total) { list.Add(cell.ToString()); } } var array = list.ToArray(); return array; } } }