Java 7 + 'da, önceki yanıtlardan birkaçı, yalnızca son segment yerine bir URI'den herhangi bir yol segmentinin alınmasına izin vermek için birleştirilebilir . Yönteminden java.nio.file.Path
yararlanmak için URI'yi bir nesneye dönüştürebiliriz getName(int)
.
Maalesef, statik fabrika Paths.get(uri)
http şemasını işleyecek şekilde oluşturulmamıştır, bu nedenle ilk önce şemayı URI'nin yolundan ayırmamız gerekir.
URI uri = URI.create("http://base_path/some_segment/id");
Path path = Paths.get(uri.getPath());
String last = path.getFileName().toString();
String secondToLast = path.getName(path.getNameCount() - 2).toString();
Son segmenti bir kod satırında elde etmek için yukarıdaki satırları iç içe geçirmeniz yeterlidir.
Paths.get(URI.create("http://base_path/some_segment/id").getPath()).getFileName().toString()
Endeks numaralarından ve olası bir hata olasılığından kaçınırken ikinciden son segmenti elde etmek için getParent()
yöntemi kullanın .
String secondToLast = path.getParent().getFileName().toString();
getParent()
Yöntemin, segmentleri ters sırada almak için tekrar tekrar çağrılabileceğini unutmayın . Bu örnekte, yol yalnızca iki parça içerir, aksi takdirde arama getParent().getParent()
, üçüncüden son parçaya kadar alır.