• go语言之进阶篇字符串操作常用函数介绍


    下面这些函数来自于strings包,这里介绍一些我平常经常用到的函数,更详细的请参考官方的文档。

    一、字符串操作常用函数介绍

    1、Contains

    func Contains(s, substr string) bool
    功能:字符串s中是否包含substr,返回bool值
    

    示例:

    fmt.Println(strings.Contains("seafood", "foo"))
    
    fmt.Println(strings.Contains("seafood", "bar"))
    
    fmt.Println(strings.Contains("seafood", ""))
    
    fmt.Println(strings.Contains("", ""))
    

    执行结果:

    true
    false
    true
    true

      

    2、Join

    func Join(a []string, sep string) string
    功能:字符串链接,把slice a通过sep链接起来 

    示例:

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

    执行结果:

    foo, bar, baz
    

      

    3、Index

    func Index(s, sep string) int
    功能:在字符串s中查找sep所在的位置,返回位置值,找不到返回-1
    

    示例:

     fmt.Println(strings.Index("chicken", "ken"))
    
     fmt.Println(strings.Index("chicken", "dmr"))
    

    执行结果:

    4
    -1
    

      

    4、Repeat

    func Repeat(s string, count int) string
    功能:重复s字符串count次,最后返回重复的字符串
    

    示例:

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

    执行结果:

    banana
    

      

     5、Replace

    func Replace(s, old, new string, n int) string
    功能:在s字符串中,把old字符串替换为new字符串,n表示替换的次数,小于0表示全部替换
    

    示例:

    fmt.Println(strings.Replace("oink oink oink", "k", "ky", 2))

    fmt.Println(strings.Replace("oink oink oink", "oink", "moo", -1))

    执行结果:

    oinky oinky oink
    
    moo moo moo

      

    6、Split

    func Split(s, sep string) []string
    功能:把s字符串按照sep分割,返回slice
    

    示例:

    fmt.Printf("%q
    ", strings.Split("a,b,c", ","))
    fmt.Printf("%q
    ", strings.Split("a man a plan a canal panama", "a "))
    fmt.Printf("%q
    ", strings.Split(" xyz ", ""))
    fmt.Printf("%q
    ", strings.Split("", "Bernardo O'Higgins"))

    #执行结果:

    ["a" "b" "c"]
    ["" "man " "plan " "canal panama"]
    [" " "x" "y" "z" " "]
    [""]
    

    7、Trim

    func Trim(s string, cutset string) string
    功能:在s字符串的头部和尾部去除cutset指定的字符串
    

    示例:

     fmt.Printf("[%q]", strings.Trim(" !!! Achtung !!! ", "! "))
    

    执行结果:

    ["Achtung"]
    

      

    8、Fields

    示例:

    func Fields(s string) []string
    功能:去除s字符串的空格符,并且按照空格分割返回slice
    

    执行结果:

    Fields are: ["foo" "bar" "baz"]
    

      

     以上应用综合示例:

    package main
    
    import (
    	"fmt"
    	"strings"
    )
    
    func main() {
    	//"hellogo"中是否包含"hello", 包含返回true, 不包含返回false
    	fmt.Println(strings.Contains("hellogo", "hello"))
    	fmt.Println(strings.Contains("hellogo", "abc"))
    
    	//Joins 组合
    	s := []string{"abc", "hello", "mike", "go"}
    	buf := strings.Join(s, "x")
    	fmt.Println("buf = ", buf)
    
    	//Index, 查找子串的位置
    	fmt.Println(strings.Index("abcdhello", "hello"))
    	fmt.Println(strings.Index("abcdhello", "go")) //不包含子串返回-1
    
        //重复多少次,这里重复3次
    	buf = strings.Repeat("go", 3)
    	fmt.Println("buf = ", buf) //"gogogo"
    
    	//Split 以指定的分隔符拆分
    	buf = "hello@abc@go@mike"
    	s2 := strings.Split(buf, "@")
    	fmt.Println("s2 = ", s2)
    
    	//Trim去掉两头的字符
    	buf = strings.Trim("      are u ok?          ", " ") //去掉2头空格
    	fmt.Printf("buf = #%s#
    ", buf)
    
    	//去掉空格,把元素放入切片中
    	s3 := strings.Fields("      are u ok?          ")
    	//fmt.Println("s3 = ", s3)
    	for i, data := range s3 {
    		fmt.Println(i, ", ", data)
    	}
    
    }

    执行结果:

    true
    false
    buf =  abcxhelloxmikexgo
    4
    -1
    buf =  gogogo
    s2 =  [hello abc go mike]
    buf = #are u ok?#
    0 ,  are
    1 ,  u
    2 ,  ok?
    

      

  • 相关阅读:
    一文看懂:史上最通俗的视频编码技术详解
    浅谈常见的七种加密算法及实现
    自毁程序
    windows下, 宽字符和窄字符的打印输出
    修改Django自带auth模块的表名
    苹果IOS微信网页cookie缓存清理
    django_rest_framework ModelViewSet不支持PUT方法,PUT修改后不生效
    nginx的access日志打印十六进制x16x03x01x02x00x01
    解决/usr/bin/ld: cannot find -lmariadb报错
    使用antd的Upload组件和axios上传文件
  • 原文地址:https://www.cnblogs.com/nulige/p/10256366.html
Copyright © 2020-2023  润新知