Go 为什么TrimLeft没有';你不能按预期工作吗?

Go 为什么TrimLeft没有';你不能按预期工作吗?,go,Go,我希望标签是“account”,但它是“account”。为什么要删除“a” package main import "fmt" import "strings" func main() { s := "refs/tags/account" tag := strings.TrimLeft(s, "refs/tags") fmt.Println(tag) } 它正在工作: TrimLeft返回字符串的一部分,其中包含所有前导Unicode 已删除割集中包含的代码点 由

我希望标签是“account”,但它是“account”。为什么要删除“a”

package main

import "fmt"
import "strings"

func main() {
    s := "refs/tags/account"
    tag := strings.TrimLeft(s, "refs/tags")
    fmt.Println(tag)
}
它正在工作:

TrimLeft返回字符串的一部分,其中包含所有前导Unicode 已删除割集中包含的代码点


由于第一个参数(割集)中有一个“a”,因此帐户中的前导“a”将被删除

使用TrimPrefix而不是TrimLeft

package main

import "fmt"
import "strings"

func main() {
    s := "refs/tags/account"
    tag := strings.TrimPrefix(s, "refs/tags/")
    fmt.Println(tag)
}
请注意,以下TrimLeft调用将产生相同的“fghijk” “字符串:


所以TrimLeft不是适合您需要的方法。我想在您给出的示例中不可能使用它来获得您期望的结果。

您可能对
strings.Split
感兴趣。实际上,它是strings.Index。不需要分开。啊。。。看来它并没有像预期的那样起作用。我需要的似乎是字符串。Index[]@Theuserwithnohat Right,trimlefit是一个违反直觉的命名方法。索引是可以的,但可能不像TrimPrefix那样方便和直观。TrimPrefix在某些情况下也是必要的,所以很高兴知道。我还是不明白。从文档中,我看不出TrimLeft和TrimPrefix之间的区别。@djeikyb请参阅'TrimPrefix'和'TrimLeft'的第二个参数。TrimPrefix接收“prefix string”,但TimeLeft接收“cutset string”。
package main

import (
        "fmt"
        "strings"
)

func main() {
    s := "/abcde/fghijk"
    tag := strings.TrimLeft(s, "/abcde")
    fmt.Println(tag)    
    tag = strings.TrimLeft(s, "/edcba")
    fmt.Println(tag)
}