【发布时间】:2022-09-24 00:35:52
【问题描述】:
我想从 golang 中的文件系统路径创建一个段列表。
- 在 Windows 上:
\"a\\b\\c\"应该被解析为 [\"a\", \"b\", \"c\"] - 在 POSIX 系统上:
\"a/b/c\"应该被解析为 [\"a\", \"b\", \"c\"]
查看path/filepath package 我只能看到Split 函数,它只将路径分成两个字符串,最后一段和其他所有内容。
是否有任何标准库函数可以将路径拆分为开箱即用的所有段?
我可以想到这个解决方法:
strings.Split(filepath.ToSlash(path), \"/\")
我也在考虑递归地使用filepath.Split,但它最终会进入无限循环,因为 dir 字符串包含结束分隔符。请参阅此示例以了解为什么您不能多次运行 Split https://go.dev/play/p/xZ-2DML0xWK。
func mySplit(path string) []string {
dir, last := filepath.Split(path)
if dir == \"\" {
return []string{last}
}
return append(mySplit(dir), last)
}
-
迭代文件路径.Split。
-
谢谢@Volker,如果您的意思是在目录上再次运行
filepath.Split,那将行不通。因为多次调用 Split 不断返回同一个目录。我在问题描述中添加了指向 Go Playground 示例的链接。我也复制到这里:go.dev/play/p/xZ-2DML0xWK