在Java 7+中,可以结合使用一些先前的答案,以允许从URI中检索任何路径段,而不仅仅是最后一个段。我们可以将URI转换为java.nio.file.Path
对象,以利用其getName(int)
方法。
不幸的是,静态工厂Paths.get(uri)
不是为处理http方案而构建的,因此我们首先需要将该方案与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();
要获得一行代码中的最后一段,只需将上面的行嵌套。
Paths.get(URI.create("http://base_path/some_segment/id").getPath()).getFileName().toString()
若要获得倒数第二个分段,同时避免使用索引号和可能出现的错误,请使用getParent()
方法。
String secondToLast = path.getParent().getFileName().toString();
请注意,getParent()
可以重复调用此方法以相反的顺序检索段。在此示例中,路径仅包含两个段,否则调用getParent().getParent()
将检索倒数第二个段。