String 在golang中最后一次出现分隔符时拆分字符串

String 在golang中最后一次出现分隔符时拆分字符串,string,go,split,String,Go,Split,我试图通过在golang中最后出现的分隔符(/)来拆分字符串 例如,我有一个字符串“a/b/c/d”,在执行拆分后,我想要一个字符串数组,如下所示 [ "a/b/c", "a/b" "a" ] 我试图探索字符串包,但找不到任何可以这样做的函数 func main() { fmt.Printf("%q\n", strings.Split("a/b/c/d/e", "/")) } 我可以知道一种处理方法吗?因为这是用于路径操作的,而且看起来您不需要尾随路径分隔符,所以执行您要执行的操作:

我试图通过在golang中最后出现的分隔符(/)来拆分字符串

例如,我有一个字符串“a/b/c/d”,在执行拆分后,我想要一个字符串数组,如下所示

[
"a/b/c",
"a/b"
"a"
]
我试图探索字符串包,但找不到任何可以这样做的函数

func main() {
    fmt.Printf("%q\n", strings.Split("a/b/c/d/e", "/"))
}

我可以知道一种处理方法吗?

因为这是用于路径操作的,而且看起来您不需要尾随路径分隔符,所以执行您要执行的操作:

fmt.Println(path.Dir("a/b/c/d/e"))
// a/b/c/d

如果这是专门针对文件系统路径的,那么您将希望使用该包来正确处理多路径分隔符

下面是一个简单的函数,用于构建给定文件路径的所有祖先目录的列表:

func main() {
  fmt.Printf("OK: %#v\n", parentsOf("a/b/c/d"))
  // OK: []string{"a/b/c", "a/b", "a"}
}

func parentsOf(s string) []string {
  dirs := []string{}
  for {
    parent := filepath.Dir(s)
    if parent == "." || parent == "/" {
      break
    }
    dirs = append(dirs, parent)
    s = parent
  }
  return dirs
}

使用
strings.LastIndex

import (
    "fmt"
    "strings"
)

func main() {
    x := "a_ab_daqe_sd_ew"
    lastInd := strings.LastIndex(x, "_")
    fmt.Println(x[:lastInd]) // o/p: a_ab_daqe_sd
    fmt.Println(x[lastInd+1:]) // o/p: ew
}

注意,如果传递的子字符串(在上面的示例中,“”)未找到

则strings.LastIndex返回-1。这仅用于路径操作吗?如果是,还有。是的,这只适用于路径操作