Java 字符串的If语句未使用equals运行,但包含works

Java 字符串的If语句未使用equals运行,但包含works,java,android,if-statement,Java,Android,If Statement,我正在开发一个android程序,它需要在用户执行特定操作之前识别用户连接到哪个Wifi网络。这是我运行以完成此任务的代码: public String isConectedToPrivateNet(StringBuilder ssid) { WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.g

我正在开发一个android程序,它需要在用户执行特定操作之前识别用户连接到哪个Wifi网络。这是我运行以完成此任务的代码:

     public String isConectedToPrivateNet(StringBuilder ssid) {


    WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
    WifiInfo wifiInfo = wifiManager.getConnectionInfo();

    ssid.replace(0, ssid.length(), wifiInfo.getSSID());
        Log.e("Data(b4 iF): ", ssid.toString());
    if(ssid.toString().equals("ACHILLES 101010")) {
        Log.e("Data (iN iF): ", ssid.toString());

    }else {
        ssid.replace(0, ssid.length(), "DIDN'T START");

    }

    return ssid.toString();

}
基本上,如果if语句为true,那么应该只返回SSID名称,对吗?但它没有,而是返回“未启动”。但当我阅读日志时,“数据(b4 if):”显示SSID是“阿基里斯101010”。因此,我假设if语句的计算结果应该为true,为什么它不这样做呢

不过,这里有一件有趣的事情:如果我用.contains()替换.equals(),If语句块中的代码运行良好,并且返回SSID。为什么会这样

*注意:StringBuilder在这里被传递为空,这是它的声明和初始化

public StringBuilder ssid = new StringBuilder("");

*我还尝试使用StringBuffer,但同样的情况也发生了

SSID字符串中可能有尾随空格或前导空格

尝试使用:

if (ssid.toString().trim().equals("ACHILLES 101010"))

trim()将删除尾随空格和前导空格。

我发现了问题:返回的SSID中有引号,所以它是这样的:“阿喀琉斯101010”,而不仅仅是阿喀琉斯101010。 所以我不得不把代码改成这样:

if(ssid.toString().equals("\"ACHILLES 101010\"")) {
.... }

谢谢你的回复,我本应该发布日志来获得更有效的答案,不过还是要谢谢你

复制并粘贴logcat到显示隐藏字符的地方。@cricket_007我试过那个人,但没有隐藏字符。我使用了这个工具:。谢谢