dtqi87613 2015-11-09 21:53
浏览 181
已采纳

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

In Go, is it possible to get the root directory of a path so that

foo/bar/file.txt

returns foo? I know about path/filepath, but

package main

import (
        "fmt"
        "path/filepath"
)

func main() {
        parts := filepath.SplitList("foo/bar/file.txt")
        fmt.Println(parts[0])
        fmt.Println(len(parts))
}

prints foo/bar/file.txt and 1 whereas I would have expected foo and 3.

  • 写回答

1条回答 默认 最新

  • duanqiangwu9332 2015-11-09 21:58
    关注

    Simply use strings.Split():

    s := "foo/bar/file.txt"
    parts := strings.Split(s, "/")
    fmt.Println(parts[0], len(parts))
    fmt.Println(parts)
    

    Output (try it on the Go Playground):

    foo 3
    [foo bar file.txt]
    

    Note:

    If you want to split by the path separator of the current OS, use os.PathSeparator as the separator:

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

    filepath.SplitList() splits multiple joined paths into separate paths. It does not split one path into folders and file. For example:

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

    Outputs:

    On Unix: [/a/b/c /usr/bin]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解