我有以下字符串
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'?
答案 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
更合适,这是可变。