java - 将 URI 转换为仅包含主机、端口和路径的字符串

标签 java string uri

我有 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/

相关文章:

java - 将倒数计时器值传递给下一个 Activity

sql - 从字符串 SQL Netezza 中提取序列号

string - 在 8086 汇编中对字符串进行排序

REST 资源路径设计

java - Spring MVC 中的延迟计算

java - 在 Closable.close() 中抛出运行时异常

Java Spark groupByKey 与 key1 并在 groupedRDD 上使用 key2 执行aggregateByKey

java - 在字符串中每隔 ""之前或 160 个字符处插入 <SPLIT>

python - 包含和不包含确切单词的 URL 正则表达式

api - REST - 如何格式化内容中的链接