Обработать строку и разбить её на команды и аргументы, по правилам CMD - C#
Формулировка задачи:
Проблема:
Нужно обработать строку и разбить её на команды и аргументы, по правилам CMD, то есть из строки 'echo hello' Программа должна определить команду 'echo' и параметр 'hello' Но проблема не в этой строке. Проблема в строках типа 'copy "C:\Program Files\бла" "D:\Programs\бла"' (То есть чтобы в параметры можно было передавать пробелы, как это реализовано в cmd)З.Ы.:
Вангую что будут танцы с Regex, но не знаю какРешение задачи: «Обработать строку и разбить её на команды и аргументы, по правилам CMD»
textual
Листинг программы
public IEnumerable<string> GetTokens(string str) { var token = new StringBuilder(); var inQuotas = false; foreach (char c in str) { switch(c) { case '"': if (token.Length > 0) yield return token.ToString(); token.Clear(); inQuotas = !inQuotas; break; case ' ': if (!inQuotas) { if (token.Length > 0) yield return token.ToString(); token.Clear(); break; } goto default; default: token.Append(c); break; } } if (token.Length > 0) yield return token.ToString(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д