1

我有以下字符串

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”?

4

3 回答 3

15

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

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

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

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

if (!str.toLowerCase().endsWith(".pdf"))
于 2012-11-25T19:15:59.723 回答
3

海。我认为这就是你想要的:

    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);
}
于 2012-11-25T19:25:37.113 回答
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可变更合适。

于 2012-11-25T19:17:04.540 回答