public static string ”братьќбратные—лэши(string строка) { StringBuilder результат = new StringBuilder(строка.Length); bool копировать—ледующий—имвол = false; for (int i = 0; i < строка.Length; i++) { if (копировать—ледующий—имвол) { результат.Append(строка[i]); копировать—ледующий—имвол = false; continue; } if (строка[i] == '\\') { копировать—ледующий—имвол = true; continue; } результат.Append(строка[i]); } if (копировать—ледующий—имвол) { результат.Append('\\'); } return(результат.ToString()); }
public static string[] –азделить оманды(string строка) { List <string> результат = new List <string>(8); StringBuilder команда = new StringBuilder(64); int вложенностьЅлока = 0; bool копировать—ледующий—имвол = false; for (int i = 0; i < строка.Length; i++) { if (копировать—ледующий—имвол) { команда.Append(строка[i]); копировать—ледующий—имвол = false; continue; } if (строка[i] == –азделитель оманд && вложенностьЅлока == 0) { результат.Add(команда.ToString()); команда = new StringBuilder(64); continue; } команда.Append(строка[i]); if (строка[i] == '\\') { копировать—ледующий—имвол = true; } else if (строка[i] == ачалоЅлока) { вложенностьЅлока++; } else if (строка[i] == онецЅлока) { вложенностьЅлока = Math.Max(0, вложенностьЅлока - 1); } } результат.Add(команда.ToString()); return(результат.ToArray()); }
public static string[] –азделитьјргументы(string строка) { List <string> результат = new List <string>(8); StringBuilder аргумент = new StringBuilder(64); int вложенностьЅлока = 0; bool копировать—ледующий—имвол = false; for (int i = 0; i < строка.Length; i++) { if (копировать—ледующий—имвол) { аргумент.Append(строка[i]); копировать—ледующий—имвол = false; continue; } if (строка[i] == '\\') { аргумент.Append(строка[i]); копировать—ледующий—имвол = true; continue; } if (строка[i] == ачалоЅлока) { if (вложенностьЅлока > 0) { аргумент.Append(строка[i]); } else if (аргумент.Length != 0) { результат.Add(аргумент.ToString()); аргумент = new StringBuilder(64); } вложенностьЅлока++; continue; } if (строка[i] == онецЅлока) { вложенностьЅлока--; if (вложенностьЅлока < 0) { вложенностьЅлока = 0; аргумент.Append(строка[i]); } else if (вложенностьЅлока > 0) { аргумент.Append(строка[i]); } else { результат.Add(аргумент.ToString()); аргумент = new StringBuilder(64); } continue; } if (строка[i] == ' ') { if (вложенностьЅлока > 0) { аргумент.Append(строка[i]); } else if (аргумент.Length != 0) { результат.Add(аргумент.ToString()); аргумент = new StringBuilder(64); } continue; } аргумент.Append(строка[i]); } if (аргумент.Length != 0) { результат.Add(аргумент.ToString()); } return(результат.ToArray()); }