zoukankan      html  css  js  c++  java
  • 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?
    

      

  • 相关阅读:
    Collections.unmodifiableMap,Collections.unmodifiableList,Collections.unmodifiableSet作用及源码解析
    Mybatis源码解析,一步一步从浅入深(五):mapper节点的解析
    Mybatis源码解析,一步一步从浅入深(四):将configuration.xml的解析到Configuration对象实例
    Mybatis源码解析,一步一步从浅入深(三):实例化xml配置解析器(XMLConfigBuilder)
    Mybatis源码解析,一步一步从浅入深(二):按步骤解析源码
    Cannot find class: com.mysql.jdbc.Driver错误及解决办法。
    Mybatis源码解析,一步一步从浅入深(一):创建准备工程
    Maven 创建项目之简单示例
    常用注解记录
    jmeter性能测试工具
  • 原文地址:https://www.cnblogs.com/nulige/p/10256366.html
Copyright © 2011-2022 走看看