例如,我需要分割项目的路径
/Users/i0564454/go/src/projectA/node
最后我需要这样
/Users/i0564454/go/src/projectA/projectA
除了remove
最后一项和复制(新)最后一项之外,其他所有内容都是相同的
文件路径不需要太多迭代就可以帮助吗? https://gowalker.org/path/filepath
答案 0 :(得分:2)
这也可以通过标准库实现。您可以使用/组合:
path.Dir()
获取文件夹(删除最后一个元素)path.Base()
获取最后一个元素path.Join()
来加入路径元素。不进行错误检查(例如,所传递的路径中是否包含文件夹),则以下功能可以满足您的要求:
func convert(s string) string {
dir := path.Dir(s)
return path.Join(dir, path.Base(dir))
}
测试:
fmt.Println(convert("/Users/i0564454/go/src/projectA/node"))
输出(在Go Playground上尝试)。
/Users/i0564454/go/src/projectA/projectA
请注意,软件包path
处理斜杠分隔的路径。如果您需要/想要支持特定于操作系统的路径,请使用path/filepath
软件包的相同功能。