Почему удваивается последний символ? - C#
Формулировка задачи:
Всем привет! Есть коллекция Dictionary, в ней хранятся символы и ключи к этим символам (Программа шифратор, работает как та же кодировка ACSII). Но вот только последний символ из RichTextBox'a шифруется 2 раза, вместо одного. Вот код
Принцип программы - Текст из RTB помещается в переменную _RTBData. Далее создается массив char[] из строки. Затем каждый символ перебирается с помощью foreach. И для каждого перебираемого символа перебирается коллекция Dictionary с именем _Data. После чего символ из RTB заменяется ключом из _Data.
На скриншоте я ввел букву А, но вместо того, что бы получить 16и значный код, я получаю их 2. Еще раз повторюсь. Если бы я ввел, например, "Привет", то последняя буква "т" зашифровалась бы дважды. И я не понимаю, почему. Как это исправить? С чем это связано?
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) { _RTBMessage.Append(_pair.Key); _RTBMessage.Append(" "); _ElNow += 1; _Coder_Counter_LBL.Text = "Кодируется элемент " + Convert.ToString(_ElNow) + " из " + Convert.ToString(_ElAll); } if (_pair.Value == Convert.ToString(_str) && _ElNow == _ElAll) { _RTBMessage.Append(_pair.Key); _ElNow += 1; } } } 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; }
Решение задачи: «Почему удваивается последний символ?»
textual
Листинг программы
if(_pair.Value == Convert.ToString(_str) && _ElNow < _ElAll) { _RTBMessage.Append(_pair.Key); _RTBMessage.Append(" "); _ElNow += 1; _Coder_Counter_LBL.Text = "Кодируется элемент " + Convert.ToString(_ElNow) + " из " + Convert.ToString(_ElAll); } if (_pair.Value == Convert.ToString(_str) && _ElNow == _ElAll) { _RTBMessage.Append(_pair.Key); _ElNow += 1; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д