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

时间:2015-03-21 19:30:30

标签: 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

2 个答案:

答案 0 :(得分:8)

正在运作as documented

  

TrimLeft返回带有所有前导Unicode的字符串s 的切片   删除了cutset中包含的代码点

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

答案 1 :(得分:7)

使用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 "字符串:

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)
}

所以TrimLeft不是适合您需求的方法。我想在您获得预期结果的示例中无法使用它。