You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在绝对URL与哈希参数之间插入路径且不使用字符串操作

问题原因

java.net.URI是不可变类,所有属性均为只读,你在apply块中尝试修改path的操作不会改变原有实例的属性,因此原有写法无法生效。

正确实现(原生JDK方案,无额外依赖)

直接拆解原有URI的各个组成部分,拼接新路径后重新构造URI实例即可,全程无需手动操作原始URL字符串:

val originalUri = URI("https://test.com/test#someParameter")
val targetUri = URI(
    originalUri.scheme,
    originalUri.userInfo,
    originalUri.host,
    originalUri.port,
    "${originalUri.path}/site",
    originalUri.query,
    originalUri.fragment
)
// 输出结果:https://test.com/test/site#someParameter
val result = targetUri.toString()

更稳妥的优化方案(OkHttp依赖场景)

如果项目引入了OkHttp,推荐使用HttpUrl类处理路径修改,会自动处理斜杠重复、特殊字符转义等边界问题,容错性更高:

val originalUrl = HttpUrl.get("https://test.com/test#someParameter")
val targetUrl = originalUrl.newBuilder()
    .addPathSegment("site")
    .build()
val result = targetUrl.toString()

内容的提问来源于stack exchange,提问作者Lukas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 10:00:05