Обработать строку и разбить её на команды и аргументы, по правилам 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();
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д