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

时间:2016-01-09 23:14:31

标签: c# string string-comparison

我正在尝试让程序响应微控制器发送的某些字,但是当我将接收到的字与预定义字进行比较时,它总是返回false。

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#并且在几天内试图弄清楚这一点,但我似乎无法找到解决这个看似简单问题的方法。

2 个答案:

答案 0 :(得分:1)

感谢Willem Van Onsem和RenéVogt,我发现了这个问题。 在读取数据并将其存储到readBuffer之后,它还包括\ r \ n(回车),使字符串实际为“A \ r \ n”,这就是为什么它与“A”相比始终为假。

答案 1 :(得分:0)

我向你提交的两件事:
1。事情并非总是如此: 使用readBuffer.Trim()。等于(" A")代替。

  1. readBuffer.Equals(" A")执行序数(区分大小写和文化不敏感)比较。
    如果你使用.Equals比较它们,A = A但是A≠a。
  2. 所以归根结底,试试这个:
    if(readBuffer.Trim()。ToUpper()。Equals(" A"))