Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Сравнение строк. Проблема с кодировкой ?


Автор: limarukraine 3.3.2021, 12:50
Доброго времени суток.

У меня с COM порта считывается строка. Потом я проверяю равна ли эта строка заданной. Однако даже если я ввожу только один символ и он правильно отображается при выводе в консоль (скрин прикреплен) то сравнение у меня false. В чем причина ? В кодировке ?  

Код

int count = port.BytesToRead;
            byte[] ByteArray = new byte[count];
            port.Read(ByteArray, 0, count);
            string s = System.Text.Encoding.UTF8.GetString(ByteArray, 0, ByteArray.Length);
            Console.WriteLine("Input string: {0}", s);

string s1 = "D";

            if (String.Compare(s, s1) == 0)

            {
                Console.WriteLine("Poradok: ");
            }                    

            else

            {
                Console.WriteLine("Bezporadok: ");
            };


Если я в программе задаю сравнение строк просто заданных (а не введенных с COM порта) то они определяются как одинаковые, то есть все нормально

Код

            string s2 = "D";
                       
            string s1 = "D";

            if (String.Compare(s2, s1) == 0)

            {
                Console.WriteLine("Poradok: ");
            }                    

            else

            {
                Console.WriteLine("Bezporadok: ");
            };

Автор: Antimol 5.9.2022, 23:50
Возможно в конец строки еще дописывается символ #0 (Окончания строки). 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)