2015-07-12 79 views
1

我使用JSON擺脫PHP字符串數據,我想比較這數據絲毫一個字符串,即使他們是相等的,但返回例如安卓:用字符串

PHP檔案造假比較JSON數據:

<?php 
    echo "ok"; 
?> 

的Java使用3日誌

BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8); 
StringBuilder sb = new StringBuilder(); 

String line = null; 
while ((line = reader.readLine()) != null) 
{ 
    sb.append(line + "\n"); 
} 
is.close(); 
page_output = sb.toString(); 

Log.i("page_output", page_output); 

Log.i("page_output", String.valueOf(page_output=="ok")); 

Log.i("page_output", String.valueOf(page_output.equals("ok"))); 

日誌

07-12 03:42:45.616: I/page_output(2007): ok 
07-12 03:42:45.736: I/page_output(2007): false 
07-12 03:42:45.736: I/page_output(2007): false 

你可以看到,page_output是確定的,但返回假

+0

問:你不應該使用[String.equals()](HTTP: //www.programmerinterview.com/index.php/java-questions/java-whats-the-difference-between-equals-and /)???? – paulsm4

+0

喜歡這個'page_output.equals(「ok」)'但不改變返回false | Log.i(「page_output」,String.valueOf(page_output.equals(「ok」)));' - >'07-12 03:23:35.936:I/page_output(1820):false' – sadegh

回答

3

試試這個:

Log.i("page_output", String.valueOf(page_output.trim().equals("ok"))); 

你是從你的PHP響應讀取每一行的末尾附加"\n"。所以你實際上將"ok\n""ok"進行比較,這就是爲什麼比較返回false

trim()函數刪除空白,包括新行\n

在這一行
1

sb.append(line + "\n");

您添加 「\ n」 新行字符到您的StringBuilder。當您致電toString時,這個字符也將被放入您的String

因此,page_output.equals("ok\n")將成立。

或者你可以只刪除了StringBuilder的「\ n」字符,因爲我沒有看到任何實際使用在你的代碼

+0

Downvoter care說明? – TmKVU