Java 字符串比较问题
我正在尝试做一些非常简单的事情,但在android中显然是非常困难的。 我只想比较两个字符串,看看它们是否相等 我有一个值为“Location”的临时变量 我已经调试了这个,它确实包含位置。。。 所以我一开始就试过了Java 字符串比较问题,java,android,string,compare,Java,Android,String,Compare,我正在尝试做一些非常简单的事情,但在android中显然是非常困难的。 我只想比较两个字符串,看看它们是否相等 我有一个值为“Location”的临时变量 我已经调试了这个,它确实包含位置。。。 所以我一开始就试过了 if(temp == "Location") { //do something } 但我已经知道这是行不通的。然后,我尝试了字符串的所有可能函数,例如: .等于 .包含 .IgnoreCasequals 等等 如果有人知道该做什么,请帮忙。这真让人讨厌 编辑: 这是一个函数,我在
if(temp == "Location") { //do something }
但我已经知道这是行不通的。然后,我尝试了字符串的所有可能函数,例如:
.等于
.包含
.IgnoreCasequals
等等
如果有人知道该做什么,请帮忙。这真让人讨厌
编辑:
这是一个函数,我在其中比较字符串,以供大家查看
public String[] getData(){
try {
int tempGroupCount = 0;
URL food_url = new URL (Constants.SERVER_DINING);
BufferedReader my_buffer = new BufferedReader(new InputStreamReader(food_url.openStream()));
temp = my_buffer.readLine();
// prime read
while (temp != null ){
// check to see if readline equals Location
Log.w("HERasdfsafdsafdsafE", temp);
// start a new location
if (temp.equals("Location")
{
groups[tempGroupCount] = temp;
tempGroupCount++;
}
Log.w("HERasdfsafdsafdsafE", temp);
//start for-loop to test to get child info
//for(temp = my_buffer.readLine(); temp != "Location" && temp != null; groupCount++, childrenCount++){
//children[groupCount][childrenCount] = temp;
//}
temp = my_buffer.readLine();
}
my_buffer.close();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
Log.e("IO EXCEPTION", "Exception occured in MyExpandableListAdapter:" + e.toString());
}
return groups;
}
试着
if(temp.equals("Location")) { //do something }
及
while (!temp.equals("")){
试着
if(temp.equals("Location")) { //do something }
及
while (!temp.equals("")){
如果变量temp是一个
字符串
,也可以使用compareTo(String)
方法
如果变量temp是一个
字符串
,也可以使用compareTo(String)
方法
equals
确实有效。如果temp.equals(“Location”)
返回false,则temp
变量不引用值为“Location”的字符串
字符串可能有无法打印的字符或其他奇怪的地方-我建议您查看字符串的长度以进行检查。或者,也可以有其他字符看起来像ASCII字符,但不是。在调试器中,尝试检查数组并获取底层字符数组-检查每个字符的Unicode值。equals
确实有效。如果temp.equals(“Location”)
返回false,则temp
变量不引用值为“Location”的字符串
字符串可能有无法打印的字符或其他奇怪的地方-我建议您查看字符串的长度以进行检查。或者,也可以有其他字符看起来像ASCII字符,但不是。在调试器中,尝试检查数组并获取底层字符数组-检查每个字符的Unicode值。尝试执行以下操作:
if (temp.toLowerCase().compareTo("location") == 0)
尝试这样做:
if (temp.toLowerCase().compareTo("location") == 0)
我也在做同样的场景,效果很好
String result = responsePrimitiveData.toString();
if(!result.equals("0")){
}
我也在做同样的场景,效果很好
String result = responsePrimitiveData.toString();
if(!result.equals("0")){
}
首先尝试将“temp”转换为字符串,然后比较它,应用它可能会对您有所帮助
首先尝试将“temp”转换为字符串,然后进行比较,这可能有助于您找到问题所在
final String LOCATION = "Location"; // just to make sure we use the very same character sequence
if (temp.equals(LOCATION)
{
/* your code here */
}
else
{
System.out.println("Location : " + Arrays.toString(LOCATION.getBytes(Charset.forName("UTF-8"))));
System.out.println("temp : " + Arrays.toString(temp.getBytes(Charset.forName("UTF-8"))));
}
这会将两个字符串的字节表示形式打印到标准输出。如果equals()返回false,则字符串不同。由于无法打印的字符或外观相似的字符,有时很难找到差异。但是字节表示应该向您显示
(我不是安卓程序员,所以我希望这些函数存在于安卓JVM上。对于任何输入错误和缺少括号(如果有的话)表示抱歉;)您可以尝试以下方法来找出问题所在
final String LOCATION = "Location"; // just to make sure we use the very same character sequence
if (temp.equals(LOCATION)
{
/* your code here */
}
else
{
System.out.println("Location : " + Arrays.toString(LOCATION.getBytes(Charset.forName("UTF-8"))));
System.out.println("temp : " + Arrays.toString(temp.getBytes(Charset.forName("UTF-8"))));
}
这会将两个字符串的字节表示形式打印到标准输出。如果equals()返回false,则字符串不同。由于无法打印的字符或外观相似的字符,有时很难找到差异。但是字节表示应该向您显示
(我不是安卓程序员,所以我希望这些函数存在于安卓JVM上。对于任何输入错误和缺少的括号(如果有;-)那么
equals
不起作用怎么办?也许这会有帮助(也许):那么equals
不起作用怎么办?也许这会有帮助(也许):嗯,我提取的数据在服务器上,我无权在服务器atm上编辑该文件,因此我无法检查文本文件是否有问题,如在空白处,可能会将其丢弃。。当你说在调试器中,我可以把每个字符串数组看作字符。。。如何?Android有一个很好的调试器。如果您不想使用它,您可以简单地遍历每个字符(通过length()
)并通过charAt
将Unicode值打印出来,通过Log.d()
@cj1098将其输出到调试输出:您说您已经调试到了代码中-因此您大概知道如何使用调试器。当你检查一个字符串时,你应该能够得到一个更“原始”的视图,这将包括对底层字符数组的访问。我从中提取的数据位于服务器上,我无权在服务器atm上编辑该文件,因此我无法检查文本文件是否有问题,如在空白处,可能会导致其丢失。。当你说在调试器中,我可以把每个字符串数组看作字符。。。如何?Android有一个很好的调试器。如果您不想使用它,您可以简单地遍历每个字符(通过length()
)并通过charAt
将Unicode值打印出来,通过Log.d()
@cj1098将其输出到调试输出:您说您已经调试到了代码中-因此您大概知道如何使用调试器。当您检查字符串时,您应该能够获得一个更为“原始”的视图,其中包括对底层char数组的访问。temp不是一个集合,它是一个字符串变量。temp不是一个集合,它是一个字符串变量。