2015-07-12 48 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