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

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

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

Go
小怪兽爱吃肉 2021-11-22 14:49:24
Golang 没有strrchrphp的功能。如果我想/path从这个字符串中删除(包括最后一个斜杠),在 golang 中如何做? mystr := "/this/is/my/path"期望输出"/this/is/my"我可以像这样得到最后一个斜线的索引lastSlash := strings.LastIndex(mystr, "/")但我不确定如何创建一个/path删除的新字符串。怎么做?
查看完整描述

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)


查看完整回答
反对 回复 2021-11-22
?
蝴蝶不菲

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,它会返回/,这可能是也可能不是你想要的。


查看完整回答
反对 回复 2021-11-22
?
慕容708150

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


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

添加回答

举报

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