我有 java.net.URI
的对象类型,我想将其转换为 String
表示形式,但我只对以下组件感兴趣:
- 主持人
- 港口
- 路径
我不想有任何其他元素,如查询、片段、用户信息或方案。
通过 getHost()
、getPort()
和 getPath()
手动完成看起来是一个脆弱的解决方案。是否有可用的 URI
格式化程序或定制的 toString
?
这里的脆弱是指可能存在一些我可能忘记手动处理的极端情况。像例如host 是 IPv6 地址然后是 needs to have brackets 的情况.
最佳答案
您可以很容易地构建一个新的 URI:
URI partial = new URI(
null, // scheme
null, // user info
uri.getHost(),
uri.getPort(),
uri.getPath(),
null, // query
null); // fragment
String text = partial.toString();
您可能想要验证主机是否为非空,以使其合理。
或者,连接方法实际上不太可能复杂得多 - 我假设您将进行单元测试来检查所有组合,无论实现如何。
关于java - 将 URI 转换为仅包含主机、端口和路径的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34639239/