這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
昨天遇到一個問題,strings.TrimRight("cyeamblog.go", ".go")
結果居然是"cyeambl"
,這讓我百思不得其解。當然,要看官方文檔的解釋:
func TrimRight(s string, cutset string) stringTrimRight returns a slice of the string s, with all trailing Unicode code points contained in cutset removed.
func TrimSuffix(s, suffix string) stringTrimSuffix returns s without the provided trailing suffix string. If s doesn’t end with suffix, s is returned unchanged.
TrimSuffix
能看明白,這也是我想要用的,符合我的要求。但是這個TrimRight
怎麼看也不知道有啥區別。除了代碼結果不一樣以別的都不清楚了。今天去大Google上面去搜,看到這個標題Is this a bug? strings.TrimRight seems to be cutting too much,樂死我了。我也是這樣想的呀,只不過不好意思上去問。
看了這個算是弄明白了。大概解釋說明一下,TrimRight
會把第二個參數字串裡面所有的字元拿出來處理,只要與其中任何一個字元相等,將其刪除。也就是cutset
參數所有字元排列組合的形式進行刪除。
最否附上一個例子:
package mainimport ("log""strings")func main() {log.Println(strings.TrimRight("abba", "ba"))log.Println(strings.TrimRight("abcdaaaaa", "abcd"))log.Println(strings.TrimSuffix("abcddcba", "dcba"))}
結果:
2015/08/13 15:56:302015/08/13 15:56:302015/08/13 15:56:30 abcd
本文所涉及到的完整源碼請參考。
######參考文獻1. Is this a bug? strings.TrimRight seems to be cutting too much.. - golang-nuts
原文連結:Golang strings包的TrimRight和TrimSuffix的區別,轉載請註明來源!