为什么两个具有相同字符的字符串在比较时不返回0

本文关键字:字符串 比较 返回 字符 两个 为什么 | 更新日期: 2023-09-27 18:07:01

大家好,我正在尝试比较两个字符串。str1是从serialPort读取的,str2是引用字符串。代码:

string str1 , str2 = "Foo";
serialPort1.Open();
str1 = serialPort1.ReadLine(); //I get "Foo" on the serial port.
if (String.Compare(str1,str2) == 0)
{ 
     //do something
}

所以字符串具有相同的值,但是if语句中的代码不会运行。如果我像这样修改If语句:

if (String.Compare(str1,str2) != 0)
{ 
     //do something
}

代码将完美运行!所以我不明白这是怎么回事?编码有问题还是怎么的?

为什么两个具有相同字符的字符串在比较时不返回0

您可以这样显示字符串内容:

dump(System.Text.Encoding.UTF8.GetBytes(str1)) ;
dump(System.Text.Encoding.UTF8.GetBytes(str2)) ;
dump(System.Text.ASCIIEncoding.Default.GetBytes(str1)) ;
dump(System.Text.ASCIIEncoding.Default.GetBytes(str2)) ;
private void dump(byte[] bytes)
{ // HexaDecimal display
  console.writeln(BitConverter.ToString(bytes)) ;
}

您可以使用Equals来进行比较。

在你的例子中:

if(str1.Equals(str2))
{
    //do stuff
}
else
{
    //do other stuff
}

也许最好打印字符串,看看实际值是什么。也许它们确实不同。