将 URI 转换为仅包含主机、端口和路径的字符串
Convert URI to String taking only host, port and path
我有 java.net.URI
类型的对象,我想将其转换为 String
表示,但我只对以下组件感兴趣:
- 主机
- 端口
- 路径
我不想要任何其他元素,例如查询、片段、用户信息或方案。
由 getHost()
、getPort()
和 getPath()
手动完成它看起来是一个脆弱的解决方案。是否有 URI
格式化程序或自定义 toString
可用?
这里的脆弱是指可能存在一些我可能忘记手动处理的极端情况。像例如主机是 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();
您可能想要验证主机是 non-null 以使其合理。
或者,串联方法不太可能复杂得多 - 我假设您将有单元测试来检查所有组合,无论实现如何。
我有 java.net.URI
类型的对象,我想将其转换为 String
表示,但我只对以下组件感兴趣:
- 主机
- 端口
- 路径
我不想要任何其他元素,例如查询、片段、用户信息或方案。
由 getHost()
、getPort()
和 getPath()
手动完成它看起来是一个脆弱的解决方案。是否有 URI
格式化程序或自定义 toString
可用?
这里的脆弱是指可能存在一些我可能忘记手动处理的极端情况。像例如主机是 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();
您可能想要验证主机是 non-null 以使其合理。
或者,串联方法不太可能复杂得多 - 我假设您将有单元测试来检查所有组合,无论实现如何。