3 回答
TA贡献1784条经验 获得超8个赞
尝试 output := mystr[:strings.LastIndex(mystr, "/")]
mystr := "/this/is/my/path"
idx := strings.LastIndex(mystr, "/")
if idx != -1{
mystr = mystr[:idx]
}
fmt.Println(mystr)
TA贡献1810条经验 获得超4个赞
captncraig 的答案适用于任何类型的分隔符字符,但假设您在 POSIX 风格的机器上运行(“/”是路径分隔符)并且您正在操作的确实是路径:
http://play.golang.org/p/oQbXTEhH30
package main
import (
"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,它会返回/,这可能是也可能不是你想要的。
TA贡献1831条经验 获得超4个赞
先前(相当令人满意的)解决方案未涵盖的一个极端情况是尾随/. 即 - 如果您想/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
- 3 回答
- 0 关注
- 135 浏览
添加回答
举报