如何在Dart中使用substring从URL链接中提取目标文件名
正确实现方案
核心逻辑分两步处理:
- 先提取URL中最后一个
/后的所有字符,得到包含查询参数的后缀片段 - 再把后缀片段中第一个
?前的内容截取出来,即为目标文件名
基础实现方案
void main() { // 链接字符串 String s = "http://www.exampleSite.com/files/146/26189-abstract-color-background.jpg?666ff"; // 取最后一个/之后的内容 String temp = s.substring(s.lastIndexOf("/") + 1); // 查找?的位置,存在就截取到?之前,不存在就取全部内容(兼容无查询参数的场景) int queryIndex = temp.indexOf("?"); String fileName = queryIndex > -1 ? temp.substring(0, queryIndex) : temp; print(fileName); // 输出:26189-abstract-color-background.jpg }
更稳妥的原生解析方案
直接调用Dart自带的Uri类解析,自动适配路径带特殊字符、多查询参数、带锚点等复杂场景,兼容性更强:
void main() { String s = "http://www.exampleSite.com/files/146/26189-abstract-color-background.jpg?666ff"; Uri uri = Uri.parse(s); String fileName = uri.pathSegments.last; print(fileName); // 输出:26189-abstract-color-background.jpg }
内容的提问来源于stack exchange,提问作者Deepjyoti Baishya
相关产品推荐
相关产品推荐

