• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    golang 中strings包的Replace的使用说明

    函数声明为:

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

    官方描述为:

    返回将s中前n个不重叠old子串都替换为new的新字符串,如果n0会替换所有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 ))
    }
    

    补充:golang_字符串操作: strings包中Contains,Join,Index,Repeat,Split,Trim,Fields的用法介绍

    字符串处理

    Contains

    func Contains(s, substr string) bool

    判断字符串s是否包含子串substr。

    fmt.Println(strings.Contains("seafood", "foo")) //true

    Join

    func Join(a []string, sep string) string

    将一系列字符串连接为一个字符串,之间用sep来分隔。

    s := []string{"foo", "bar", "baz"}
    fmt.Println(strings.Join(s, ", ")) //foo, bar, baz

    Index

    查找子串的位置

    func Index(s, sep string) int

    子串sep在字符串s中第一次出现的位置,不存在则返回-1。

    fmt.Println(strings.Index("chicken", "ken")) //4
    fmt.Println(strings.Index("chicken", "dmr")) //不包含子串返回-1 

    Repeat

    func Repeat(s string, count int) string

    返回count个s串联的字符串。

    fmt.Println("ba" + strings.Repeat("na", 2)) //banana

    Split

    以指定的分隔符拆分,返回一组切片

    func Split(s, sep string) []string 

    用去掉s中出现的sep的方式进行分割,会分割到结尾,并返回生成的所有片段组成的切片(每一个sep都会进行一次切割,

    即使两个sep相邻,也会进行两次切割)。如果sep为空字符,Split会将s切分成每一个unicode码值一个字符串。

    fmt.Printf("%q\n", strings.Split("a,b,c", ",")) //%q 输出格式为:带引号的字符串
    fmt.Printf("%q\n", strings.Split("a man a plan a canal panama", "a "))
    fmt.Printf("%q\n", strings.Split(" xyz ", ""))
    fmt.Printf("%q\n", strings.Split("", "Bernardo O'Higgins"))

    Output:

    ["a" "b" "c"]
    ["" "man " "plan " "canal panama"]
    [" " "x" "y" "z" " "]
    [""] //若分隔符在原字符串中不存在,返回原字符串切片

    Trim

    去掉两端的字符

    func Trim(s string, cutset string) string

    返回将s前后端==所有==cutset包含的utf-8码值都去掉的字符串。

    fmt.Println(strings.Trim(" !!! Achtung! Achtung! !!! ", "! ")) 
    // Achtung! Achtung
    // 会去掉字符串两端所有的"!"和" "

    Fields

    去掉空格,把元素放入切片中

    func Fields(s string) []string

    返回将字符串按照空白(unicode.IsSpace确定,可以是一到多个连续的空白字符)

    分割的多个字符串。如果字符串全部是空白或者是空字符串的话,会返回空切片。

    fmt.Printf("Fields are: %q", strings.Fields(" foo bar baz "))
    // Fields are: ["foo" "bar" "baz"]

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

    您可能感兴趣的文章:
    • golang 中signal包的Notify用法说明
    • golang strings包的Replace的使用说明
    • Golang Printf,Sprintf,Fprintf 格式化详解
    • 完美解决go Fscanf 在读取文件时出现的问题
    • Golang 并发以及通道的使用方式
    • golang 如何替换掉字符串里面的换行符\n
    • golang监听文件变化的实例
    上一篇:Golang Printf,Sprintf,Fprintf 格式化详解
    下一篇:golang strings包的Replace的使用说明
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    golang 中strings包的Replace的使用说明 golang,中,strings,包的,Replace,