Bruce Blog Bruce Blog
首页
  • CentOS
  • Ubuntu-Debian
  • 系统网络
  • 系统辅助工具
  • MySQL
  • Redis
  • Mongodb
  • Docker基础
  • Container基础
  • Kubernetes

    • Kubernetes基础
    • Kubernetes辅助
  • Container-Network
  • Jenkins
  • Gitlab
  • ArgoCD
  • Ansible
  • Terraform
  • AWS
  • MQ
  • NGINX
  • JumpServer
  • 基础
  • 函数模块
  • 框架
  • 基础

    • Golang环境
    • 语法
    • 数据类型与运算符
    • 分支语句
    • 循环语句
    • 数组
    • 切片
    • Map
    • String
    • 函数
    • 包的管理
    • 指针
    • 结构体
    • Go语言中的OOP
    • 方法和接口
    • 错误处理
  • Go进阶

    • Go进阶
  • Go框架

    • Go框架
  • Golang辅助

    • Golang辅助
  • CSS
  • HTML
  • JavaScript
  • 前端辅助
  • 常用命令
  • 性能监控工具
  • Windows下Docker使用
  • 日常学习
  • 其他导航

Bruce Tao

运维界的该溜子
首页
  • CentOS
  • Ubuntu-Debian
  • 系统网络
  • 系统辅助工具
  • MySQL
  • Redis
  • Mongodb
  • Docker基础
  • Container基础
  • Kubernetes

    • Kubernetes基础
    • Kubernetes辅助
  • Container-Network
  • Jenkins
  • Gitlab
  • ArgoCD
  • Ansible
  • Terraform
  • AWS
  • MQ
  • NGINX
  • JumpServer
  • 基础
  • 函数模块
  • 框架
  • 基础

    • Golang环境
    • 语法
    • 数据类型与运算符
    • 分支语句
    • 循环语句
    • 数组
    • 切片
    • Map
    • String
    • 函数
    • 包的管理
    • 指针
    • 结构体
    • Go语言中的OOP
    • 方法和接口
    • 错误处理
  • Go进阶

    • Go进阶
  • Go框架

    • Go框架
  • Golang辅助

    • Golang辅助
  • CSS
  • HTML
  • JavaScript
  • 前端辅助
  • 常用命令
  • 性能监控工具
  • Windows下Docker使用
  • 日常学习
  • 其他导航
  • 基础

    • Golang环境

    • 语法

    • 数据类型与运算符

    • 分支语句

    • 循环语句

    • 数组

    • 切片

    • Map

    • String

      • String
      • string的使用
      • 函数

      • 包的管理

      • 指针

      • 结构体

      • Go语言中的OOP

      • 方法和接口

      • 错误处理

    • Go进阶

    • Go框架

    • Golang辅助

    • Golang
    • 基础
    • String
    Bruce
    2022-10-27
    目录

    string的使用

    # 一、字符串(string)

    # 1.1 什么是string
    • Go中的字符串是一个字节的切片.可以通过将其内容封装在""中来创建字符串.Go中的字符串是Unicode兼容的,并且是UTF-8编码的.
    package main
    
    import (  
        "fmt"
    )
    
    func main() {  
        name := "Hello World"
        fmt.Println(name)
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 1.2 string的使用
    # 1.2.1 访问字符串中的单个字节
    package main
    
    import (  
        "fmt"
    )
    
    func main() {  
        name := "Hello World"
        for i:= 0; i < len(s); i++ {
            fmt.Printf("%d ", s[i])
        }
        fmt.Printf("\n")
        for i:= 0; i < len(s); i++ {
            fmt.Printf("%c ",s[i])
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16

    运行结果:

    72 101 108 108 111 32 87 111 114 108 100 
    H e l l o   W o r l d 
    
    1
    2
    # 1.3.综合示例代码
    package main
    
    import "fmt"
    
    func main() {
    	/*
    		Go中的字符串是一个字节的切片.
    			可以通过将其内容封装在""中来创建字符串.Go中的字符串是Unicode兼容的,并且是UTF-8编码的.
    
    		字符串是一些字符的集合.
    			理解为一个字符的序列.
    			每个字符都有固定的位置(索引,下标,index: 从0开始,到长度减1)
    
    		语法: "",``
    			""
    			"a","b","中"
    		字符: --->对应编码表中的编码值
    			A--->65
    			B--->66
    			a--->97
    			...
    
    		字节: byte--->uint8
    			utf8
    	*/
    	//1.定义字符串
    	s1 := "hello"
    	s2 := "hello world"
    	fmt.Println(s1)
    	fmt.Println(s2)
    
    	//2.字符串的长度: 返回字节的个数
    	fmt.Println(len(s1)) //因为字符每个字符占1个字节,中文字符每个字符占3个字节
    	fmt.Println(len(s2))
    
    	//3.获取某个字节
    	fmt.Println(s2[0]) //获取字符传中的第一个字节
    	a := 'h'
    	b := 104
    	fmt.Printf("%c,%c,%c\n", s2[0], a, b)
    
    	//4.字符串的遍历
    	for i := 0; i < len(s2); i++ {
    		//fmt.Println(s2[i])
    		fmt.Printf("%c\t", s2[i])
    	}
    
    	//for range
    	//for _, v := range s2 {
    	//	//fmt.Println(i, v)
    	//	fmt.Printf("%c\t", v)
    	//}
    
    	//5.字符串是字节的集合
    	slice1 := []byte{65, 66, 67, 68, 69}
    	s3 := string(slice1) //根据一格字节切片,构建字符串
    	fmt.Println(s3)
    
    	s4 := "abcdef"
    	slice2 := []byte(s4) //根据字符串,获取对应的字节切片
    	fmt.Println(slice2)
    
    	//6.字符串不能修改
    	fmt.Println(s4)
    	//s4[2] = "B" // cannot assign to s4[2] (value of type byte) 字符串是不允许修改的
    }
    
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66

    # 二、strings包的使用

    # 示例代码
    package main
    
    import (
    	"fmt"
    	"strings"
    )
    
    func main() {
    	/*
    		strings包下的关于字符串的函数
    	*/
    
    	s1 := "helloworld"
    	//1.是否包含指定的内容--->bool
    	fmt.Println(strings.Contains(s1, "abc"))
    	//2.是否包含chars中任意的一个字符即可
    	fmt.Println(strings.ContainsAny(s1, "abcd"))
    	//3.统计substr在s中出现的次数
    	fmt.Println(strings.Count(s1, "llo"))
    
    	//4.以xxx前缀开头,以xxx后缀结尾
    	s2 := "20220525课堂笔记.txt"
    	if strings.HasPrefix(s2, "202205") {
    		fmt.Println("2022年5月的文件...")
    	}
    	if strings.HasSuffix(s2, ".txt") {
    		fmt.Println("文本文档...")
    	}
    
    	//索引
    	//helloworld
    	fmt.Println(strings.Index(s1, "l"))        // 查找substr在s中的位置,如果不存在就返回-1
    	fmt.Println(strings.IndexAny(s1, "abcdh")) //查找charts中任意的一个字符,出现在s中的位置
    	fmt.Println(strings.LastIndex(s1, "l"))    //查找substr在s中最后一次出现的位置
    
    	//字符串的拼接
    	ss1 := []string{"abc", "world", "hello", "ruby"}
    	s3 := strings.Join(ss1, "*")
    	fmt.Println(s3)
    
    	//切割
    	s4 := "123,456,aaa,49595,45"
    	ss2 := strings.Split(s4, ",")
    	//fmt.Println(ss2)
    
    	for i := 0; i < len(ss2); i++ {
    		fmt.Println(ss2[i])
    	}
    
    	//重复,自己拼接自己count次
    	s5 := strings.Repeat("hello", 5)
    	fmt.Println(s5)
    
    	//替换
    	//helloworld
    	s6 := strings.Replace(s1, "l", "*", 1) // 末尾给定的数字,代表需要替换的次数,"-1"代表无效的,会对所有匹配的进行替换
    	fmt.Println(s6)
    
    	s7 := "heLLO WOrlD**123..."
    	fmt.Println(strings.ToLower(s7))
    	fmt.Println(strings.ToUpper(s7))
    
    	/*
    		截取子串:
    		substring(start:end) ---> substr
    		str[start:end] ---> substr
    			包含str,不包含end下标
    	*/
    	fmt.Println(s1)
    	s8 := s1[0:5]
    	fmt.Println(s8)
    	s9 := s1[5:]
    	fmt.Println(s9)
    }
    
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74

    # 三、strconv包的使用

    # 示例代码
    package main
    
    import (
    	"fmt"
    	"strconv"
    )
    
    func main() {
    	/*
    		strconv包: 字符串和几倍你类型之间的转换
    			string convert
    
    		strconv:
    			i, err := strconv.Atoi("-42") //转成数字类型
    			s := strconv.Itoa(-42)	// 转换成字符串类型
    	*/
    	//fmt.Printf("aa" + 100)
    	//1.bool类型
    	s1 := "true"
    	b1, err := strconv.ParseBool(s1)
    	if err != nil {
    		fmt.Println(err)
    		return
    	}
    	fmt.Printf("%T,%t\n", b1, b1)
    
    	ss1 := strconv.FormatBool(b1)
    	fmt.Printf("%T,%s\n", ss1, ss1)
    
    	//2.整数
    	s2 := "100"
    	i2, err := strconv.ParseInt(s2, 10, 64) // 这里的"base"代表需要转成2进制,8进制,10进制等类型的数据
    	if err != nil {
    		fmt.Println(err)
    		return
    	}
    	fmt.Printf("%T,%d\n", i2, i2)
    
    	ss2 := strconv.FormatInt(i2, 10)
    	fmt.Printf("%T.%s\n", ss2, ss2)
    
    	//itoa()atoi()
    	i3, err := strconv.Atoi("-42") //转为int类型
    	if err != nil {
    		fmt.Println(err)
    		return
    	}
    	fmt.Printf("%T,%d\n", i3, i3)
    
    	i4 := strconv.Itoa(-42) //转为字符串类型
    	fmt.Printf("%T,%s\n", i4, i4)
    
    }
    
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    上次更新: 2024/04/09, 16:48:42
    String
    函数

    ← String 函数→

    最近更新
    01
    AWS NAT-NetWork-Firwalld配置(一)
    04-09
    02
    AWS NAT-NetWork-Firwalld配置(二)
    04-09
    03
    kubernetes部署minio对象存储
    01-18
    更多文章>
    Theme by Vdoing | Copyright © 2019-2024 Bruce Tao Blog Space | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式