String.endsWith() не работает

У меня есть следующая строка

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 ответа

Решение

Так как 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"))

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);
}

- Это просто потому, что ваша строка 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, который изменчив.

Другие вопросы по тегам