我正在尝试做一些非常简单的事情,显然在android中非常困难。 我只想比较两个字符串,看它们是否相等。
我有一个值为“Location”的临时变量 我调试了它,它确实包含Location ... 所以我最初尝试了这个
if(temp == "Location") { //do something }
但我已经知道这不起作用。然后,我尝试了所有可能的函数,例如:
.equals 。载 .ignoreCaseEquals 等...
如果有人知道该怎么做请帮忙。这真的很烦人。
编辑: 这是我正在比较那些想要看的人的字符串的函数。
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;
}
答案 0 :(得分:3)
equals
工作。如果temp.equals("Location")
返回false,则您的temp
变量不会引用值为“Location”的字符串。
字符串可能有不可打印的字符或其他奇怪的内容 - 我建议您查看要检查的字符串的 length 。或者,可以有其他字符看起来像ASCII字符,但不是。在调试器中,尝试检查数组并获取基础char数组 - 检查每个字符的Unicode值。
答案 1 :(得分:2)
if(temp.equals("Location"))
{
//your code here
}
does not work
try this
if(temp.contains("Location"))
{
//your code here
}
答案 2 :(得分:0)
尝试
if(temp.equals("Location")) { //do something }
和
while (!temp.equals("")){
答案 3 :(得分:0)
如果您的变量temp是String
,您还可以使用方法compareTo(String)
。
if (temp.compareTo("Location") == 0)
{
//do something
}
答案 4 :(得分:0)
尝试这样做:
if (temp.toLowerCase().compareTo("location") == 0)
答案 5 :(得分:0)
我正在做同样的情况,工作正常。
String result = responsePrimitiveData.toString();
if(!result.equals("0")){
}
答案 6 :(得分:0)
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.toString().equalsIgnoreCase("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;
}
首先尝试将“temp”转换为字符串然后比较它,应用这可能有助于你
答案 7 :(得分:0)
您可以尝试以下方法找出问题所在。
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,则字符串不同。由于不可打印的字符或类似的字符,有时很难找到差异。但是字节表示应该显示给你。
(我不是一个Android程序员,所以我希望android JVM上存在这些函数。对不起任何错别字和丢失的括号 - 如果有的话......)