这篇文章主要介绍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,new,-1 ))
    
    // 不替换任何匹配的 old;n=0:  123lafaldsjglad123lkfasdf123djfal123lkdjga123lksjfla123l
    fmt.Println("n=0: ",0 )) 

    // 用 new 替换第一个匹配的 old;n=1:  888lafaldsjglad123lkfasdf123djfal123lkdjga123lksjfla123l
    fmt.Println("n=1: ",1 ))

    // 用 new 替换前 5 个匹配的 old(实际多于 5 个);n=5:  888lafaldsjglad888lkfasdf888djfal888lkdjga888lksjfla123l
    fmt.Println("n=5: ",5 )) 
    
    // 用 new 替换前 7 个匹配上的 old(实际没那么多);n=7:  888lafaldsjglad888lkfasdf888djfal888lkdjga888lksjfla888l
    fmt.Println("n=7: ",7 )) 

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

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

    // 不替换任何匹配的 old;n=0:  888888888888888888
    fmt.Println("n=0: ",0 )) 
  
    // 用 new 替换第一个匹配的 old;n=1:  666888888888888888
    fmt.Println("n=1: ",1 )) 

     // 用 new 替换前 5 个匹配的 old(实际多于 5 个);n=5:  666666666666666888
    fmt.Println("n=5: ",5 ))

     // 用 new 替换前 7 个匹配上的 old(实际没那么多);n=7:  666666666666666666
    fmt.Println("n=7: ",7 ))
}