如果字符串语句没有使用equals运行,但包含有效

时间:2016-12-04 15:37:50

标签: java android if-statement

我正在开发一个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语句为真,那么它应该只返回SSID名称吗?但它不会,而是返回“DID NOT START”。当我读取我的日志时,“数据(b4 if):”表示SSID为“ACHILLES 101010”。因此,我假设if语句应该评估为true,为什么不这样做呢?

这里有一些有趣的事情:如果我用.contains()替换.equals(),if语句块中的代码运行完美,并返回SSID。为什么会这样?

*一些注意事项:StringBuilder传递为空,这里是声明和初始化

public StringBuilder ssid = new StringBuilder("");

*我也试过使用StringBuffer,同样的事情发生了。

2 个答案:

答案 0 :(得分:1)

我发现了问题:返回的SSID中有引号,所以它是这样的:“ACHILLES 101010”,而不仅仅是ACHILLES 101010。 所以我不得不将代码更改为:

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

感谢您的所有回复,我应该发布日志以获得更有效的答案,但无论如何,谢谢。

答案 1 :(得分:0)

也许你的SSID字符串中有空格或前导空格?

尝试使用:

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

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