在最后一个斜杠的右侧修剪多个字符,包括斜杠

Golang 没有strrchrphp的功能。如果我想/path从这个字符串中删除(包括最后一个斜杠),在 golang 中如何做?

 mystr := "/this/is/my/path"

期望输出

"/this/is/my"

我可以像这样得到最后一个斜线的索引

lastSlash := strings.LastIndex(mystr, "/")

但我不确定如何创建一个/path删除的新字符串。怎么做?


小怪兽爱吃肉
浏览 136回答 3
3回答

青春有我

尝试 output := mystr[:strings.LastIndex(mystr, "/")]mystr := "/this/is/my/path" idx := strings.LastIndex(mystr, "/")if idx != -1{  mystr = mystr[:idx]}fmt.Println(mystr)

蝴蝶不菲

captncraig 的答案适用于任何类型的分隔符字符,但假设您在 POSIX 风格的机器上运行(“/”是路径分隔符)并且您正在操作的确实是路径:http://play.golang.org/p/oQbXTEhH30package mainimport (    "fmt"    "path/filepath")func main() {    s := "/this/is/my/path"    fmt.Println(filepath.Dir(s))    // Output: /this/is/my}来自 godoc ( https://golang.org/pkg/path/filepath/#Dir ):Dir 返回除路径的最后一个元素之外的所有元素,通常是路径的目录。删除最后一个元素后,路径被清理并删除尾部斜杠。虽然如果你用 运行它/path,它会返回/,这可能是也可能不是你想要的。

慕容708150

先前(相当令人满意的)解决方案未涵盖的一个极端情况是尾随/. 即 - 如果您想/foo/bar/quux/修剪为/foo/bar而不是/foo/bar/quux. 这可以通过regexp库来完成:mystr := "/this/is/my/path/"trimpattern := regexp.MustCompile("^(.*?)/[^/]*/?$")newstr := trimpattern.ReplaceAllString(mystr, "$1")fmt.Println(newstr)这里有一个更完整的例子:http : //play.golang.org/p/ii-svpbaHt
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go