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

如何从URI中提取协议域名后的路径及参数部分?

提取Uri中协议/域名后的部分

在Dart中可以直接利用Uri类的内置属性实现需求,无需复杂的字符串处理,具体实现如下:

实现方案

通过Uri的路径和查询参数属性拼接结果,同时处理路径开头的斜杠:

String doMagic(Uri uri) {
  // 去掉路径开头的斜杠
  String path = uri.path.substring(1);
  // 存在查询参数时,拼接?和参数部分
  if (uri.hasQuery) {
    return '$path?${uri.query}';
  }
  return path;
}

测试示例

场景1:localhost带端口的Uri

final uri = Uri.parse("localhost:XXXX/category1/category2/?id=AAAA");
final result = doMagic(uri);
print(result); // 输出: category1/category2/?id=AAAA

场景2:带HTTPS协议的域名Uri

final uri = Uri.parse("https://example.com/category1/category2/?id=AAAA");
final result = doMagic(uri);
print(result); // 输出: category1/category2/?id=AAAA

原理说明

  • uri.path:返回Uri的路径部分,始终以/开头,通过substring(1)去掉开头的斜杠
  • uri.hasQuery:判断Uri是否包含查询参数(即?后的内容)
  • uri.query:返回查询参数字符串(不包含?)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 20:52:45