如何比较用于网址的两个字符串

时间:2016-05-22 14:39:45

标签: java android url equals

我正在编写一个查看托管在服务器上的文件的应用程序,如果它发生更改,则会重新加载webview。这用于跨设备复制大量网页。

我使用以下方式设置了初始网址:

private String originalURL;
private String newURL;

然后定义要在onCreate上使用的那个

originalURL = "https://www.buzzfeed.com/sallytamarkin/total-body-workouts#.moYPngWVWy";

然后我在计时器上运行异步任务:

private static String getUrlContents(String theUrl)
{
    StringBuilder content = new StringBuilder();

    // many of these calls can throw exceptions, so i've just
    // wrapped them all in one try/catch statement.
    try
    {
        // create a url object
        URL url = new URL(theUrl);

        // create a urlconnection object
        URLConnection urlConnection = url.openConnection();

        // wrap the urlconnection in a bufferedreader
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));

        String line;

        // read from the urlconnection via the bufferedreader
        while ((line = bufferedReader.readLine()) != null)
        {
            content.append(line + "\n");
        }
        bufferedReader.close();
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
    return content.toString();
}

private class BackgroundTask extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... params) {
        // perform your network logic here
        String output  = getUrlContents("http://52.30.226.234/url.txt");
        System.out.println("output is " + output);
        newURL = output;
        return "YourResult";
    }

    @Override
    protected void onPostExecute(String result) {
        // Update your screen with the results.
    }
}

当我尝试比较两个字符串时,它们总是评估为不同。我尝试过match(),equals()和equalsIgnoreCase()。这是我正在使用的代码

if ((originalURL.equals(newURL))==true) {
                System.out.println("SAME");
            } else {
                System.out.println("NOT SAME");
            }
        }

我还用之前定义的两个字符串对它进行了测试,它运行正常。

我只能认为这是因为特殊字符,但已经尝试了几个修复以删除特殊字符,但这也没有用。

请帮忙!

2 个答案:

答案 0 :(得分:1)

请勿在{{1​​}};

中写下“true”

如果您需要if-clause

,请执行此操作
Case-Sensitive

如果您需要if(string1.equals(string2)){ System.out.println("SAME"); } else{ System.out.println("NOT SAME"); }

,请执行此操作
Case-Insensitive

如果它不符合您的要求,或者您想进行更严格的比较,请尝试使用Collator

答案 1 :(得分:-1)

可能是由于最后的网址的乱码部分。这部分经常变化。打印以查看它们是否相同。