为什么TrimLeft不能按预期工作?

The*_*hat 5 go

我希望标签是"帐户",但它是"ccount".为什么删除"a"?

package main

import "fmt"
import "strings"

func main() {
    s := "refs/tags/account"
    tag := strings.TrimLeft(s, "refs/tags")
    fmt.Println(tag)
}
Run Code Online (Sandbox Code Playgroud)

stu*_*rtd 8

按照记录的方式工作:

TrimLeft返回字符串s的一个片段,其中包含cutset中包含的所有前导Unicode代码点

因为第一个参数(cutset)中有一个'a',所以帐户中的前导'a'被删除


Lan*_*eyo 7

使用TrimPrefix而不是TrimLeft

package main

import "fmt"
import "strings"

func main() {
    s := "refs/tags/account"
    tag := strings.TrimPrefix(s, "refs/tags/")
    fmt.Println(tag)
}
Run Code Online (Sandbox Code Playgroud)

请注意,在TrimLeft调用之后将产生相同的"fghijk"字符串:

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)
}
Run Code Online (Sandbox Code Playgroud)

所以TrimLeft不是适合您需求的方法.我想在你给出的例子中使用它是不可能的,以获得你期望的结果.