为了账号安全,请及时绑定邮箱和手机立即绑定

获取GO中某个路径的第一个目录

获取GO中某个路径的第一个目录

Go
侃侃尔雅 2021-11-22 15:19:48
在 Go 中,是否可以获取路径的根目录,以便foo/bar/file.txt返回foo? 我知道路径/文件路径,但是package mainimport (        "fmt"        "path/filepath")func main() {        parts := filepath.SplitList("foo/bar/file.txt")        fmt.Println(parts[0])        fmt.Println(len(parts))}打印foo/bar/file.txt,1而我会期望foo和3。
查看完整描述

2 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

只需使用strings.Split():


s := "foo/bar/file.txt"

parts := strings.Split(s, "/")

fmt.Println(parts[0], len(parts))

fmt.Println(parts)

输出(在Go Playground上试试):


foo 3

[foo bar file.txt]

笔记:


如果要按当前操作系统的路径分隔符进行拆分,请os.PathSeparator用作分隔符:


parts := strings.Split(s, string(os.PathSeparator))

filepath.SplitList()将多个连接的路径拆分为单独的路径。它不会将一个路径拆分为文件夹和文件。例如:


fmt.Println("On Unix:", filepath.SplitList("/a/b/c:/usr/bin"))

输出:


On Unix: [/a/b/c /usr/bin]


查看完整回答
反对 回复 2021-11-22
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

请注意,如果您只需要第一部分,strings.SplitN我的测试至少要快 10 倍:


package main

import "strings"


func main() {

   parts := strings.SplitN("foo/bar/file.txt", "/", 2)

   println(parts[0] == "foo")

}

https://golang.org/pkg/strings#SplitN


查看完整回答
反对 回复 2021-11-22
  • 2 回答
  • 0 关注
  • 156 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信