golang 中 strings 包的 Replace 用法介紹筆記

函數申明:

func Replace(s, old, new string, n int) string

官方描述爲:

返回將s中前n個不重疊old子串都替換爲new的新字符串,如果n<0會替換所有old子串。

示例代碼爲:

func main() {
    // non-overlapping: "123" repeat 6 times in s
    s := "123lafaldsjglad123lkfasdf123djfal123lkdjga123lksjfla123l"
    old := "123"
    new := "888"

fmt.Println("non-overlapping: ")
 // n < 0 ,用 new 替換所有匹配上的 old;n=-1:  888lafaldsjglad888lkfasdf888djfal888lkdjga888lksjfla888l
fmt.Println("n=-1: ", strings.Replace(s, old, new, -1 ))

// 不替換任何匹配的 old;n=0:  123lafaldsjglad123lkfasdf123djfal123lkdjga123lksjfla123l
fmt.Println("n=0: ", strings.Replace(s, old, new, 0 )) 

// 用 new 替換第一個匹配的 old;n=1:  888lafaldsjglad123lkfasdf123djfal123lkdjga123lksjfla123l
fmt.Println("n=1: ", strings.Replace(s, old, new, 1 ))

// 用 new 替換前 5 個匹配的 old(實際多於 5 個);n=5:  888lafaldsjglad888lkfasdf888djfal888lkdjga888lksjfla123l
fmt.Println("n=5: ", strings.Replace(s, old, new, 5 )) 

// 用 new 替換前 7 個匹配上的 old(實際沒那麼多);n=7:  888lafaldsjglad888lkfasdf888djfal888lkdjga888lksjfla888l
fmt.Println("n=7: ", strings.Replace(s, old, new, 7 )) 

// overlapping:
s = "888888888888888888"
old = "888"
new = "666"
fmt.Println("overlapping: ")

// n < 0 ,用 new 替換所有匹配上的 old;n=-1:  666666666666666666
fmt.Println("n=-1: ", strings.Replace(s, old, new, -1 )) 

// 不替換任何匹配的 old;n=0:  888888888888888888
fmt.Println("n=0: ", strings.Replace(s, old, new, 0 )) 

// 用 new 替換第一個匹配的 old;n=1:  666888888888888888
fmt.Println("n=1: ", strings.Replace(s, old, new, 1 )) 

 // 用 new 替換前 5 個匹配的 old(實際多於 5 個);n=5:  666666666666666888
fmt.Println("n=5: ", strings.Replace(s, old, new, 5 ))

 // 用 new 替換前 7 個匹配上的 old(實際沒那麼多);n=7:  666666666666666666
fmt.Println("n=7: ", strings.Replace(s, old, new, 7 ))
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章