• 【愚公系列】2022年08月 Go教学课程 040-字符串处理



    前言

    符串或串(String)是由数字、字母、下划线组成的一串字符。它是编程语言中表示文本的数据类型。在程序设计中,字符串为符号或数值的一个连续序列。字符串操作就是以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。–百度百科

    相关文档网址:https://studygolang.com/pkgdoc
    在这里插入图片描述

    一、字符串处理函数

    1.len()

    package main
    
    import (
    	"fmt"
    	"strconv"
    	"strings"
    )
    
    func main() {
    	str1 := "Hello Go"
    	fmt.Println("str len=", len(str1))
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2.Atoi()

    package main
    
    import (
    	"fmt"
    	"strconv"
    	"strings"
    )
    
    func main() {
    	n, err := strconv.Atoi("123")
    	if err != nil {
    		fmt.Println("error:", err)
    	} else {
    		fmt.Println("n=", n)
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    3.Itoa()

    package main
    
    import (
    	"fmt"
    	"strconv"
    	"strings"
    )
    
    func main() {
    	// 整数转字符串
    	str2 := strconv.Itoa(123)
    	fmt.Println("s =", str2)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    4.字符串转[]byte

    package main
    
    import (
    	"fmt"
    	"strconv"
    	"strings"
    )
    
    func main() {
    	// 字符串转[]byte
    	bytes := []byte("hello go")
    	fmt.Printf("bytes=%v\n", bytes)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    5.byte[]转字符串

    package main
    
    import (
    	"fmt"
    	"strconv"
    	"strings"
    )
    
    func main() {
    	// byte转字符串
    	str3 := string([]byte{101, 102, 103})
    	fmt.Println("str3=%v\n", str3)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    6.FormatInt()

    package main
    
    import (
    	"fmt"
    	"strconv"
    	"strings"
    )
    
    func main() {
    	// 10进制转2,8,16进制
    	str4 := strconv.FormatInt(123, 2)
    	fmt.Println("str4=%v\n", str4)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    7.Contains()

    package main
    
    import (
    	"fmt"
    	"strconv"
    	"strings"
    )
    
    func main() {
    	// 查找子串是否在指定的字符串中
    	b := strings.Contains("golang", "go")
    	fmt.Println("b=", b)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    8.Count()

    package main
    
    import (
    	"fmt"
    	"strconv"
    	"strings"
    )
    
    func main() {
    	// 统计字符串有几个指定的子串
    	x := strings.Count("goo", "o")
    	fmt.Println("x=", x)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    9.EqualFold()

    package main
    
    import (
    	"fmt"
    	"strconv"
    	"strings"
    )
    
    func main() {
    	str5 := strings.EqualFold("GOLANG", "golang")
    	fmt.Println("str5 =", str5)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    10.Index()

    package main
    
    import (
    	"fmt"
    	"strconv"
    	"strings"
    )
    
    func main() {
    	// 返回子字符串第一次出现在字符串中的位置
    	str6 := strings.Index("golang", "ol")
    	fmt.Println("str6=", str6)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    11.LastIndex()

    package main
    
    import (
    	"fmt"
    	"strconv"
    	"strings"
    )
    
    func main() {
    	// 返回子串在字符串最后出现的位置
    	str7 := strings.LastIndex("golang", "g")
    	fmt.Println("str7=", str7)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    12.Replace()

    package main
    
    import (
    	"fmt"
    	"strconv"
    	"strings"
    )
    
    func main() {
    	// 将指定的字符串替换为另外字符串
    	str8 := strings.Replace("golang", "go", "go语言", -1)
    	fmt.Println("str8=", str8)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    13.Split()

    package main
    
    import (
    	"fmt"
    	"strconv"
    	"strings"
    )
    
    func main() {
    	// 将字符串拆分成字符串数组
    	strArr := strings.Split("hello,golang", ",")
    	fmt.Println("str9=", strArr)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    14.ToLower()和ToUpper()

    package main
    
    import (
    	"fmt"
    	"strconv"
    	"strings"
    )
    
    func main() {
    	// 字符串大小写转换
    	str9 := strings.ToLower("GOLANG")
    	fmt.Println("str9=", str9)
    	str10 := strings.ToUpper("golang")
    	fmt.Println("str10=", str10)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    15.TrimSpace()

    package main
    
    import (
    	"fmt"
    	"strconv"
    	"strings"
    )
    
    func main() {
    	// 将字符串两边的空格去掉
    	str11 := strings.TrimSpace(" Hello Golang ")
    	fmt.Println("str11=", str11)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    16.Trim()

    package main
    
    import (
    	"fmt"
    	"strconv"
    	"strings"
    )
    
    func main() {
    	// 将字符左右两边指定的字符去掉, Trim, TrimLeft, TrimRight
    	str12 := strings.Trim(",hello golang,", ",")
    	fmt.Println("str12=", str12)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    17.HasPrefix()

    package main
    
    import (
    	"fmt"
    	"strconv"
    	"strings"
    )
    
    func main() {
    	// 判断字符串是否以指定的字符串开头
    	str13 := strings.HasPrefix("https://www.baidu.com/", "https")
    	str14 := strings.HasSuffix("hello.go",".go")
    	fmt.Println("str13=", str13)
    	fmt.Println("str14=", str14)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    18.join()

    package main
    
    import (
    	"fmt"
    	"strconv"
    	"strings"
    )
    
    func main() {
       s:=[]string{"abc","hello","world"}
       str:=strings.Join(s,"|") // 以"|"对切片中的内容进行分隔
       fmt.Println(str)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    19.Repeat()

    package main
    
    import (
    	"fmt"
    	"strconv"
    	"strings"
    )
    
    func main() {
       str:=strings.Repeat("go",3) // 表示字符串"go"重复3次
       fmt.Println(str)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    二、字符串处理案例

    package main
    
    import (
    	"fmt"
    	"strings"
    )
    
    //让用户输入一个日期格式,如:2018-01-02, 输出日期为2008年1月2日
    //让用户输入一句话,判断这句话中有没有“邪恶”,如果有“邪恶”就替换成“**”,然后输出.
    func main() {
    	// 1: 输入日期
    	//fmt.Println("请输入日期,格式:年-月-日")
    	//var str string
    	//fmt.Scan(&str)
    	 2: 按照"-"进行分隔
    	//s:=strings.Split(str,"-")
    	 3: 输出指定的格式
    	//fmt.Println(s[0]+"年"+s[1]+"月"+s[2]+"日")
    
    	// 第二道题
    	// 1:定义变量存储用户输入的一句话
    	fmt.Println("请输入一句话:")
    	var str string
    	fmt.Scan(&str)
    	// 2:判断用户输入的内容中是否有“邪恶”
    	if strings.Contains(str, "邪恶") {
    		// 3: 如果有,则进行替换
    		str = strings.Replace(str, "邪恶", "**", -1)
    	}
    	fmt.Println(str)
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    在这里插入图片描述

  • 相关阅读:
    使用代理后pip install 出现ssl错误
    从入门到一位合格的爬虫师,这几点很重要
    【LeetCode】Day137-寻找消失&重复数
    13.华为秋招一二面
    【Linux】管道命令split、awk、sed【二】
    免费的绘图和图表工具Tldraw
    【我的创作纪念日】一周年随笔
    百度Apollo自定义安装第三方库(以libtorch为例)
    初级软件测试工程师面试
    复旦大学:邮件系统安全运维实用建议
  • 原文地址:https://blog.csdn.net/aa2528877987/article/details/126325297