为什么两个具有相同字符的字符串在比较时不返回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
}
代码将完美运行!所以我不明白这是怎么回事?编码有问题还是怎么的?
您可以这样显示字符串内容:
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
}
也许最好打印字符串,看看实际值是什么。也许它们确实不同。