如何在Kotlin中无硬编码解析URL地址并拆分各组成部分?
Kotlin 无硬编码解析URL
在Kotlin中可以利用JDK自带的java.net.URI类安全解析URL,无需硬编码拆分字符串,以下是针对目标URL的实现代码:
import java.net.URI fun main() { val urlString = "https://googledroids.com/post.html?limit=25&since=1374196005&md5=d8959d12ab687ed5db978cb078f1e&time=0dfdbac117" val uri = URI(urlString) // 提取协议 val scheme = uri.scheme // 结果: https // 提取域名 val host = uri.host // 结果: googledroids.com // 提取路径 val path = uri.path // 结果: /post.html // 提取并解析参数键值对 val params = uri.query?.split("&")?.associate { param -> val (key, value) = param.split("=", limit = 2) key to value } ?: emptyMap() // params 内容: {limit=25, since=1374196005, md5=d8959d12ab687ed5db978cb078f1e, time=0dfdbac117} // 验证输出 println("协议: $scheme") println("域名: $host") println("路径: $path") println("参数: $params") }
代码说明
URI类会自动处理URL的结构拆分,避免手动截取字符串带来的错误(比如参数顺序变化、特殊字符转义等)。split("=", limit = 2)确保参数值中包含=符号时不会被错误拆分。- 用
?: emptyMap()处理URL无参数的情况,避免空指针异常。
内容的提问来源于stack exchange,提问作者Jorgesys
相关产品推荐
相关产品推荐

