字符串比较问题

时间:2011-08-08 06:36:47

标签: java android string compare

我正在尝试做一些非常简单的事情,显然在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;
    }

8 个答案:

答案 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上存在这些函数。对不起任何错别字和丢失的括号 - 如果有的话......)