C# 比较 2 个字符串总是 return false

C# Comparing 2 strings always return false

我试图让程序响应微控制器发送的某些词,但是当我将接收到的词与预定义词进行比较时,它总是 returns 错误。

private void ReadData()
{
    if (serialPort1.IsOpen == true)
    {
        if (serialPort1.BytesToRead > 0)
        {
            string readBuffer = serialPort1.ReadLine(); 

            textBox2.Text = readBuffer;
            if (readBuffer.Equals("A")) //MY MAIN PROBLEM
            {
                textBox2.Text += "YEP";
            }
            else
            {
                textBox2.Text += "NOPE";
            }
        }
    }
}

基本上当微控制器发送字母"A"时,它读取它并将其存储到readBuffer字符串中,甚至在textbox(textBox2)中打印出来。我的结果始终是 textbox 中的 ANOPE(A 是微控制器发送的内容,NOPE 始终存在,因为 if 失败)。 我最近开始使用 C#,花了几天时间试图解决这个问题,但我似乎真的找不到解决一个看似简单的问题的方法。

我向您提交两件事:
1。事情并不总是像他们看起来的那样: 使用 readBuffer.Trim().Equals("A") 代替。

  1. readBuffer.Equals("A") 执行序数(case-sensitive 和 culture-insensitive)比较。
    A = A 但 A ≠ a 如果您使用 .Equals 来比较它们。

所以归根结底,试试这个:
if (readBuffer.Trim().ToUpper().Equals("A"))

感谢 Willem Van Onsem 和 René Vogt,我解决了这个问题。 它读取数据存入readBuffer后,还包含了\r(回车return),使得字符串实际上是"A\r",这就是为什么它和"A"相比总是false的原因.