Чтение текста в массив, обработчик комманд в текстовом поле - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет! Хочу написать обработчик команд и команд с параметрами для настроек в текстовом окне. Обработчик я даже написал, и он правильно работает, но всёравно есть проблема. По мере написания логики обработки комманд, вышло так что всё сделал в дурном тоне программиста (всё через if):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace OGAAUServer.system
{
    class ConsoleProcessor
    {
        private string notfound;
        public string NotFoudCommand { get; private set; }
        public string ConCommand { get; private set; }
        public string SubConCommand { get; private set; }
        public string paramValue { get; private set; }
        public string paramValue1 { get; private set; }
        public string paramValue2 { get; private set; }
        public string paramValue3 { get; private set; }
        public string paramValue4 { get; private set; }
        public string paramValue5 { get; private set; }
        public string paramValue6 { get; private set; }
        public string paramValue7 { get; private set; }
        public string paramValue8 { get; private set; }
        public string paramValue9 { get; private set; }
        public string paramValue10 { get; private set; }
        public int СharactersNumber { get; private set; }
 
        public ConsoleProcessor(string str)
        {
            str += ":@&%#stop#%&@";
            string[] parts = str.Split(':');
            notfound = parts[0];
            notfound += ".@&%#stop#%&@";
            string[] parts1 = notfound.Split('.');
            if (parts[1] != "@&%#stop#%&@")
            {
                paramValue1 = parts[1];
                if (parts[2] != "@&%#stop#%&@")
                {
                    paramValue2 = ":" + parts[2];
                    if (parts[3] != "@&%#stop#%&@")
                    {
                        paramValue3 = ":" + parts[3];
                        if (parts[4] != "@&%#stop#%&@")
                        {
                            paramValue4 = ":" + parts[4];
                            if (parts[5] != "@&%#stop#%&@")
                            {
                                paramValue5 = ":" + parts[5];
                                if (parts[6] != "@&%#stop#%&@")
                                {
                                    paramValue6 = ":" + parts[6];
                                    if (parts[7] != "@&%#stop#%&@")
                                    {
                                        paramValue7 = ":" + parts[7];
                                        if (parts[8] != "@&%#stop#%&@")
                                        {
                                            paramValue8 = ":" + parts[8];
                                            if (parts[9] != "@&%#stop#%&@")
                                            {
                                                paramValue9 = ":" + parts[9];
                                                if (parts[10] != "@&%#stop#%&@")
                                                {
                                                    paramValue10 = ":" + parts[10];
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            if (parts1[0] != "@&%#stop#%&@")
            {
                ConCommand = parts1[0];
                NotFoudCommand = parts1[0];
                if (parts1[1] != "@&%#stop#%&@")
                {
                    SubConCommand = parts1[1];
                    NotFoudCommand += "." + parts1[1];
                }
            }
 
            paramValue = paramValue1 + paramValue2 + paramValue3 + paramValue4 + paramValue5 + paramValue6 + paramValue7 + paramValue8 + paramValue9 + paramValue10;
        }
    }
}
Можно ли без этих барикад сделать всё более компактнее с таким же принцепом работы? P.S. Пытался писать через цикл, но он вызывал завичание программы при обработке комманды.
private int partsnum = 1;
 
...
 
partsnum = 1;
             while (parts[partsnum] != "@&%#stop#%&@")
            {
                switch ()
                {
                    case 1:
                        paramValue1 = parts[partsnum];
                        partsnum += 1;
                        break;
                    case 2:
                        paramValue2 = ":" + parts[partsnum];
                        partsnum += 1;
                        break;
                    case 3:
                        paramValue3 = ":" + parts[partsnum];
                        partsnum += 1;
                        break;
                    case 4:
                        paramValue4 = ":" + parts[partsnum];
                        partsnum += 1;
                        break;
                    case 5:
                        paramValue5 = ":" + parts[partsnum];
                        partsnum += 1;
                        break;
                    case 6:
                        paramValue6 = ":" + parts[partsnum];
                        partsnum += 1;
                        break;
                    case 7:
                        paramValue7 = ":" + parts[partsnum];
                        partsnum += 1;
                        break;
                    case 8:
                        paramValue8 = ":" + parts[partsnum];
                        partsnum += 1;
                        break;
                    case 9:
                        paramValue9 = ":" + parts[partsnum];
                        partsnum += 1;
                        break;
                    case 10:
                        paramValue10 = ":" + parts[partsnum];
                        partsnum += 1;
                        break;
                }
            }
Взаранее спасибо за помощь!

Решение задачи: «Чтение текста в массив, обработчик комманд в текстовом поле»

textual
Листинг программы
                for (int i = 0; i < parts.Length; i++) 
                {
                    if (parts[i] == "@&%#stop#%&@") //вот здесь тока сомневаюсь, мб должно быть parts[i] != "@&%#stop#%&@"
                        paramValues[i] = ":" + parts[i];
                }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.5 из 5
Похожие ответы