C# 代码在相等比较时返回false?
我目前的问题是: 我的服务器将数据返回给客户端,这包括一个名称。现在我希望客户机获取这个名称并进行比较。然而,在过去的3个小时里,我被这个问题困住了,我不想廉价地解决它 我的服务器返回一个值,然后返回一个名称,例如:random23454@NAMEHERE 我使用以下方法拆分值:C# 代码在相等比较时返回false?,c#,multithreading,sockets,equals,C#,Multithreading,Sockets,Equals,我目前的问题是: 我的服务器将数据返回给客户端,这包括一个名称。现在我希望客户机获取这个名称并进行比较。然而,在过去的3个小时里,我被这个问题困住了,我不想廉价地解决它 我的服务器返回一个值,然后返回一个名称,例如:random23454@NAMEHERE 我使用以下方法拆分值: string[] values = returndata.Split('@'); 然后我在做: if (textBox3.Text == values[1]) { MessageBox.Show("equal");
string[] values = returndata.Split('@');
然后我在做:
if (textBox3.Text == values[1]) {
MessageBox.Show("equal");
}
然而,这里的问题是。我不能让它相等,我尝试了其他方法,但它只是不显示相等
我所做的:
将textBox3.Text打印到一个textbox,将值[1]打印到另一个textbox,并与我的眼睛和鼠标进行比较(使用线程调用)
使用了.Trim()函数
对值[1]使用.ToString()(只是为了好玩)
将它们分配给一个完整的新字符串,修剪它们并进行比较
使用以下命令将比较拖到线程外部:
this.Invoke((MethodInvoker)delegate()
{
outside(name);
});
并执行相同的检查
我的代码:
string returndata = System.Text.Encoding.ASCII.GetString(inStream);
readData = "" + returndata;
if (readData.Contains("@") && readData.Contains("random"))
{
string[] values = returndata.Split('@');
string name = values[1].Trim();
if (textBox3.Text == name)
{
MessageBox.Show("true");
}
else
{
MessageBox.Show("false");
this.Invoke((MethodInvoker)delegate()
{
outside(name);
});
}
我还能做什么?我只是不明白这是不平等的
提前感谢。从服务器返回的数据可能是一个字节数组。在拆分之前,请先尝试将响应转换为
字符串。在进一步操作之前,还可以尝试将响应(或响应的类型)打印到控制台,以查看得到的结果
还要确保每个字符串的长度
相同。也许可以试试utf-8而不是ASCII?像这样:
System.Text.Encoding.UTF8.GetString(inStream);
string name=value[1].Trim()代码>
我想您需要值[2]
在这里。按照我阅读文档的方式,索引1处的元素将是(空白)分隔符指示器。您需要告诉我们有关inStream
。我强烈怀疑这是一个字节数组,其中包含实际数据,然后是一堆0。。。您应该使用string text=Encoding.ASCII.GetString(data,0,dataRead)
-或者使用StreamReader
开始。您是否尝试将这两个值打印到控制台?尝试修剪文本框
文本。(textBox3.Text.Trim()
)我已将这两个值打印到messageBox和textBox,它们都是相同的。@user2911924请尝试System.Text.Encoding.UTF8.GetString(inStream)
而不是System.Text.Encoding.ASCII.GetString(inStream)
。我在messagebox和textbox中都看到了输出,它只是普通的纯文本。给我一个错误,它超出了索引,此外,如果是这种情况,它也不会在messagebox或textbox中显示纯值。无论如何,谢谢你的意见!