有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何比较URL使用的两个字符串

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

我使用以下方法设置初始url:

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) 个答案

  1. # 1 楼答案

    可能是因为最后url的乱七八糟部分。这部分经常变化。打印以查看它们是否相同

  2. # 2 楼答案

    不要在你的^{中写“真”

    如果需要Case-Sensitive,请执行以下操作:

    if(string1.equals(string2)){
        System.out.println("SAME");
     } 
     else{
        System.out.println("NOT SAME");              
    }
    

    如果需要Case-Insensitive,请执行以下操作:

    if(string1.equalsIgnoreCase(string2)){
        System.out.println("SAME");
     } 
     else{
        System.out.println("NOT SAME");              
    }
    

    如果它不符合你想要的,或者你想做一个更严格的比较,试着使用Collator