public void ParseArgs(Command command) { if (command.format == null) { args = SplitByQuotes(argsString); } else { args = Regex.Match(argsString, command.format, RegexOptions.Compiled).Groups.Cast <Group>().Skip(1).ToDictionary(g => g.Name, g => g.Value); // сопоставим строку с регулярным выражением, получим реализующую интерфейс IEnumerable<T> коллекцию, пропустим первый элемент, учтя, что это исходная строка, спроецируем каждую группу в пару, где ключ - имя группы, а значение - полученная строка, получим словарь как совокупность этих пар } }
public static CommandArgs Create(string originalText, string prefix, string command, string argsString, MultiIndexableCollection args) { CommandArgs result = new CommandArgs(); result.originalText = originalText; result.prefix = prefix; result.command = command; result.argsString = argsString; result.args = args; return(result); }