2014-02-25 3 views
0

У меня есть следующий код:Почему две одинаковые строки не равны?

int nb=0; 
wifiInfo = wifi.getConnectionInfo(); 
ssid = wifiInfo.getSSID(); 
wifi.startScan(); 
result=wifi.getScanResults(); 
int sizeList=vysledek.size(); 

if(result==null) { 

    Log.d(LOG,"ERROR"); 

} else { 

    for(int i=0; i<sizeList; i++) { 

     Log.d("Check",result.get(i).SSID); 
     if (result.get(i).SSID.equalsIgnoreCase(ssid)) { 
      Log.d("SSID",ssid); 
      nb++; 
     } 
     //Log.d("nb:",Integer.toString(nb)+"Size:"+Integer.toString(sizeList)); 

    } 
} 

I'm подключен к сети Wi-Fi под названием ABC и result.get(0).SSID, result.get(1).SSID и result.get(2).SSID также ABC. Почему оператор if не увеличивает nb? nb все равно 0 во всех случаях. Спасибо всем

+0

@donfuxx Или 'equalsIgnoreCase()', как показано в приведенном выше коде ... – Geobits

+0

правда ... @Geobits – donfuxx

+0

точно, I'm с помощью equalsIgnoreCase() или равно() оба отказались – user3340336

ответ

1

getScanResults() даст SSID с двойной цитатой, например. ваша ABC будет «ABC» при доступе через result.get (i) .SSID.

Так что удалите эти цитаты, прежде чем сравнивать.

/** 
* remove double quote from start and end of the string 
*/ 
private String unornamatedSsid(String ssid) { 
    ssid = ssid.replaceFirst("^\"", ""); 
    return ssid.replaceFirst("\"$", ""); 
} 

Использование выше функции:

String scannedSSid = unornamatedSsid(result.get(i).SSID); 
if (scannedSSid.equalsIgnoreCase(ssid)) { 
} 
+0

Спасибо :) Работа – user3340336

Смежные вопросы