Пример #1
0
    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());
    }
Пример #2
0
    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());
    }
Пример #3
0
    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());
    }