Di Java 7+, beberapa jawaban sebelumnya dapat digabungkan untuk memungkinkan pengambilan segmen jalur apa pun dari URI, bukan hanya segmen terakhir. Kita bisa mengonversi URI menjadi java.nio.file.Path
objek, untuk memanfaatkan getName(int)
metodenya.
Sayangnya, pabrik statis Paths.get(uri)
tidak dibangun untuk menangani skema http, jadi pertama-tama kita perlu memisahkan skema dari jalur URI.
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();
Untuk mendapatkan segmen terakhir dalam satu baris kode, cukup tambahkan baris di atas.
Paths.get(URI.create("http://base_path/some_segment/id").getPath()).getFileName().toString()
Untuk mendapatkan segmen kedua hingga terakhir sambil menghindari nomor indeks dan potensi kesalahan off-by-one, gunakan getParent()
metode ini.
String secondToLast = path.getParent().getFileName().toString();
Perhatikan bahwa getParent()
metode ini dapat dipanggil berulang kali untuk mengambil segmen dalam urutan terbalik. Dalam contoh ini, jalur hanya berisi dua segmen, jika tidak, pemanggilan getParent().getParent()
akan mengambil segmen ketiga hingga terakhir.