Ставится лишний пробел - C#

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

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

Всем привет! У меня есть вот этот код :
void _Coder()
        {
            CheckForIllegalCrossThreadCalls = false;
            _Coder_BTN_Code.Enabled = false;
            string _RTBData = _Coder_RTB.Text;
            _ElAll = _RTBData.Length;
            StringBuilder _RTBMessage = new StringBuilder();
 
            char[] _StringData = _RTBData.ToCharArray(0, _RTBData.Length);
            foreach (char _str in _StringData)
            {
                if (_Data.ContainsValue(Convert.ToString(_str)) == true)
                {
                    foreach (KeyValuePair<string, string> _pair in _Data)
                    {
                        if (_pair.Value == Convert.ToString(_str) && _ElNow < _ElAll)
                        {
                            _ElNow += 1;
                            _RTBMessage.Append(_pair.Key);
                            _RTBMessage.Append(" ");
                            _Coder_Counter_LBL.Text = "Кодируется элемент " + Convert.ToString(_ElNow) + " из " + Convert.ToString(_ElAll);
                        }
                        else if (_pair.Value == Convert.ToString(_str) && _ElNow == _ElAll)
                        {
                            _ElNow += 1;
                            _RTBMessage.Append(_pair.Key);
                        }
                    }
                }
                else
                {
                    _Learn_Log_LB.Items.Insert(0, "Отсутствие шифруемых символов в базе данных...");
                    _Coder_BTN_Code.Enabled = true;
                }
            }
 
            _Coder_RTB.Text = Convert.ToString(_RTBMessage);
            _ElNow = 0;
            _Coder_BTN_Code.Enabled = true;
        }
Цель этих строк - 1. Превратить все символы из RichTextBox (RTB) в char[] массив. 2. Перебрать каждый символ с помощью foreach 3. Проверить, есть ли в коллекции Dictionary с именем _Data "Values", совпадающие с перебираемым символом. 4. Если пункт 3 истин, то тогда перебрать всю коллекцию _Data в поисках ключа для символа. 5. После нахождения ключа, ключ добавляется в StringBuilder, и ставится " " (Пробел), если после этого символа в массиве char[] есть еще символы. Но если этот символ последний, то тогда пробел не ставится. Программа шифратор. Заменяет символы на их "шифрованные" ключи. И сама проблема у меня с пятым пунктом. Пробел всегда ставится, даже если в RTB был один символ. Почему? С чем это связано? Как это исправить? P.S: Пытался поместить строку _ElNow += 1; в сам цикл foreach, но после этого любой символ, что я ввожу, просто исчезал...

Решение задачи: «Ставится лишний пробел»

textual
Листинг программы
_RTBMessage.Append(string.Join(" ", your_ListName));

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


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

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

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