我有這樣的各種網址:
String a = "file:./bla/file.txt"; // Valid, see See [RFC 3986][1], path - rootless definition
String b = "file:.file.txt"; // Valid, see See [RFC 3986][1], path - rootless definition
String c = "file:./file.txt"; // Valid, see See [RFC 3986][1], path - rootless definition
String d = "file:///file.txt";
String e = "file:///folder/file.txt";
String f = "http://example.com/file.txt";
String g = "https://example.com/file.txt";
這些都是有效的 URL,我可以將它們轉換為 java 中的 URL,而不會出錯:
URL url = new URL(...);
我想從上面的每個示例中提取檔案名,所以我只剩下:
file.txt
我已經嘗試了以下方法,但這不適用于b上面的示例(這是一個有效的 URL):
b.substring(path.lastIndexOf('/') 1); // Returns file:.file.txt
我可以撰寫一些自定義代碼來檢查斜杠,只是想知道是否有更好更健壯的方法來做到這一點?
uj5u.com熱心網友回復:
該URI類正確決議URI的部分。對于大多數 URL,您需要URI的路徑。在沒有斜杠的 URI 的情況下,不會對部分進行任何決議,因此您必須依賴整個特定于方案的部分:
URI uri = new URI(b);
String path = uri.getPath();
if (path == null) {
path = uri.getSchemeSpecificPart();
}
String filename = path.substring(path.lastIndexOf('/') 1);
以上應該適用于您的所有網址。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/364259.html
上一篇:顫動比較檢查兩個網址是否相似
