代码在相等比较时返回false

本文关键字:返回 false 比较 代码 | 更新日期: 2023-09-27 17:51:09

我目前遇到的问题:

服务器将数据返回给客户端,其中包括一个名称。现在我想让客户端获取这个名称并进行比较。然而,在过去的3个小时里,我被困在这个问题上,我不想廉价地修复它。

我的服务器返回一个值和一个名称,例如:random23454@NAMEHERE

我使用:

string[] values = returndata.Split('@');

然后我在做:

if (textBox3.Text == values[1]) {
MessageBox.Show("equal");
}

然而,这里的问题是。我不能让它相等,我试过其他方法,但它就是不显示相等。

我做了什么:

打印textBox3。文本到一个文本框和打印值[1]到另一个文本框和比较我的眼睛和鼠标(使用调用由于线程)。

使用。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);
                        });
                    }

我还能做什么?我只是不明白它不等于……

代码在相等比较时返回false

您从服务器返回的数据可以是一个字节数组。在分割之前,先尝试将响应转换为string。还可以尝试将响应(或响应的类型)打印到控制台,以便在进一步操作之前查看得到的结果。

还要确保每个字符串的length相同。也许可以试试utf-8而不是ASCII?像这样:

System.Text.Encoding.UTF8.GetString(inStream);

string name = values[1].Trim();

我认为你需要values[2]在这里。我阅读Split文档的方式是,索引1处的元素将是(空白)分隔符指示符。