我使用json从php中获取字符串数据,我想将此数据与字符串进行比较,即使它们相等但返回false,例如
php文件:
<?php
echo "ok";
?>
java use 3 log
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
是ok的但是返回false
试试这个:
Log.i("page_output", String.valueOf(page_output.trim().equals("ok")));
您将"'n"
附加在从php响应中读取的每行的末尾。所以你实际上是在比较"ok'n"
和"ok"
,这就是为什么比较返回false
。
trim()
函数删除空白,包括新行'n
。
在这一行:
sb.append(line + "'n");
在StringBuilder中添加"'n"新行字符。当您调用toString
时,该字符也将放在您的String
中。
因此,page_output.equals("ok'n")
将为真。
或者你可以从StringBuilder
中删除''n'字符,因为我在你的代码中没有看到任何实际用途