String.endsWith()不起作用

时间:2012-11-25 19:14:20

标签: java string ends-with

我有以下字符串

http://store.aqa.org.uk/qual/newgcse/pdf/AQA-4695-W-SP.PDF

我希望如此,如果用户忘记输入http://或.PDF,程序将自动纠正此问题。因此,我尝试了这段代码

if (!str.startsWith("http://")) { // correct forgetting to add 'http://'
        str = "http://" + str;
    }
    System.out.println(str);
    if (!str.endsWith("\\Q.PDF\\E")) {
        str = str + "\\Q.pdf\\E";
    }

但是,即使输入正确的字符串,http://store.aqa.org.uk/qual/newgcse/pdf/AQA-4695-W-SP.PDF 输出也是如此。

http://store.aqa.org.uk/qual/newgcse/pdf/AQA-4695-W-SP.PDF\Q.pdf\E

为什么呢?为什么要添加另一个'。PDF'?

3 个答案:

答案 0 :(得分:15)

因为http://store.aqa.org.uk/qual/newgcse/pdf/AQA-4695-W-SP.PDF最后没有\Q.PDF\E。在字符串文字中,\\为您提供反斜杠。因此"\\Q.PDF\\E"\Q.PDF\E - 反斜杠,后跟Q,后跟一个点,后跟PDF,然后是另一个反斜杠,然后是E

如果您想查看字符串是否以.PDF结尾,请使用

if (!str.endsWith(".PDF"))

当然,这是区分大小写的。如果您希望它不区分大小写,可能是:

if (!str.toLowerCase().endsWith(".pdf"))

答案 1 :(得分:3)

HY。我想这就是你想要的:

    String str = "http://store.aqa.org.uk/qual/newgcse/pdf/AQA-4695-W-SP";
    //String str = "http://store.aqa.org.uk/qual/newgcse/pdf/AQA-4695-W-SP.PDF";
    if (!str.startsWith("http://")) { // correct forgetting to add 'http://'
        str = "http://" + str;
    }
    System.out.println(str);
    if (!str.endsWith(".PDF")) {
        str = str + ".PDF";
    }
    System.out.println(str);
}

答案 2 :(得分:0)

- 这只是因为您的字符串http://store.aqa.org.uk/qual/newgcse/pdf/AQA-4695-W-SP.PDF 不会\Q.PDF\E结尾

- 如果您担心匹配.PDF,请执行此操作...

if (s.endsWith(".PDF")){

  // add it at the end....

}

- 在这里使用StringBuilder而不是String更合适,这是可变