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がないからです。\Q.PDF\E文字列リテラルで\\は、バックスラッシュを与えます。 バックスラッシュの後に"\\Q.PDF\\E"、ドット、 、別のバックスラッシュ、.\Q.PDF\EQPDFE

文字列が で終わるかどうかを確認したい場合は.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

- String http://store.aqa.org.uk/qual/newgcse/pdf/AQA-4695-W-SP.PDF doesNotで終わるからです。\Q.PDF\E

- .PDF の一致が気になる場合は、次のようにします...

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

  // add it at the end....

}

-変更可能なStringBuilderの代わりにString、ここで使用する方が適切です。

于 2012-11-25T19:17:04.540 に答える