本文主要记录使用此库函数遇到的问题
直接上代码:
1 2 3 4 5 6 |
func main() { cfgs := "mongodb://off" cfgs = strings.TrimLeft(cfgs, "mongodb://") fmt.Printf("cfgs:%v\n",cfgs) //output ==> cfgs:ff } |
像上面的内容,我们实际上期望的得到的输出是 off
但实际的输出是:ff
然后找了一下,提了个issue到golang的官方github,结果人家秒回:
I think you want https://godoc.org/strings#TrimPrefix instead.
然后我们看一下官方的库的解释:
1 2 |
func TrimLeft(s string, cutset string) string TrimLeft returns a slice of the string s with all leading Unicode code points contained in cutset removed. |
大概的意思就是说,它会从字符串的左边开始找,然后找包含了cutset的自字符,然后直到找不到为止,然后把最后的找到的自负的左边字符串移除。
就好比
1 |
TrimLeft("hello Tom","hl") |
它会找hl两个自负,然后找到发现为止在 hell,然后就把hell移除了
最后我们要达到我们的效果,我们应该用什么函数呢?建议的是用TrimPrefix:
1 2 |
func TrimPrefix(s, prefix string) string TrimPrefix returns s without the provided leading prefix string. If s doesn't start with prefix, s is returned unchanged. |
大概的意思就是说,它会把你的前缀移除掉,然后返回剩下的自负,如果没有找到你想要的前缀,则原样返回字符串
记录遇到的坑,也是一个学习过程的进步