二丫讲梵 二丫讲梵
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)

二丫讲梵

行者常至,为者常成
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)
  • Shell编程

  • Go编程笔记

  • 前端编程笔记

  • Go学习笔记

    • 基础部分

      • 基础知识
      • 数据类型
      • fmt的格式化输入输出
      • 运算符
      • 流程控制
      • 认识函数
      • 包的操作
      • 项目工程-在同级目录
      • 指针(pointer)
      • 数组(array)
      • 切片(slice)
      • 字典(map)
      • 结构体(struct)
      • 匿名组合
      • 方法
      • 接口
      • error接口
      • panic
      • recover
      • 字符串操作
        • 1,Contains
        • 2,Join
        • 3,Index
        • 4,Repeat
        • 5,Replace
        • 6,Split
        • 7,Trim
        • 8,Fields
      • 字符串转换
      • 正则表达式
      • JSON处理
      • 文件的操作
      • goroutine
      • channel
      • select
      • sync-lock锁
      • 网络概述
      • Socket编程
      • 发文件与聊天室
      • http编程
      • 爬虫实战
      • 单元测试了解
    • web框架

    • orm框架

  • Vue-21年学习笔记

  • Vue-22年重学笔记

  • 编程世界
  • Go学习笔记
  • 基础部分
二丫讲梵
2021-07-10
目录

字符串操作

文章发布较早,内容可能过时,阅读注意甄别。

字符串在开发中经常用到,包括用户的输入,数据库读取的数据等,我们经常需要对字符串进行分割、连接、转换等操作,我们可以通过 Go 标准库中的 strings 和 strconv 两个包中的函数进行相应的操作。

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

# 1,Contains

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

示例代码:

package main

import (
	"fmt"
	"strings"
)

func main() {
	//"hellogo"中是否包含"hello",包含返回true,不包含返回false
	fmt.Println(strings.Contains("hellogo", "hello"))
	fmt.Println(strings.Contains("hellogo", "abc"))

}
1
2
3
4
5
6
7
8
9
10
11
12
13

# 2,Join

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

示例代码:

package main

import (
	"fmt"
	"strings"
)

func main() {
	//Join 将内容组合在一起
	s := []string{"abc", "hello", "eryajf", "go"}
	jo := strings.Join(s, "&") //"&"表示以&作为分隔符
	fmt.Println("jo = ", jo)
}
1
2
3
4
5
6
7
8
9
10
11
12
13

# 3,Index

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

示例代码:

package main

import (
	"fmt"
	"strings"
)

func main() {
	//Index,查找字符串的位置
	fmt.Println(strings.Index("abchello", "hello"))
	fmt.Println(strings.Index("abchello", "go")) //不包含返回-1
}
1
2
3
4
5
6
7
8
9
10
11
12

# 4,Repeat

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

示例代码:

package main

import (
	"fmt"
	"strings"
)

func main() {
	buf := strings.Repeat("go", 3)
	fmt.Println("buf = ", buf)
}
1
2
3
4
5
6
7
8
9
10
11

# 5,Replace

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

示例代码:

package main

import (
	"fmt"
	"strings"
)

func main() {
	//Replace
	fmt.Println(strings.Replace("oink oink oink", "k", "ky", 2))         //表示把k更换成ky,更换两次
	fmt.Println(strings.Replace("oink oink oink", "oink", "eryajf", -1)) //小于0表示全部替换

}
1
2
3
4
5
6
7
8
9
10
11
12
13

# 6,Split

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

示例代码:

package main

import (
	"fmt"
	"strings"
)

func main() {
	//Split 以指定的分隔符拆分
	s1 := strings.Split("hello@abc@eryajf@go", "@")
	fmt.Println("s1 = ", s1)
}
1
2
3
4
5
6
7
8
9
10
11
12

# 7,Trim

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

示例代码:

package main

import (
	"fmt"
	"strings"
)

func main() {
	//Trim去掉两头的字符
	s2 := strings.Trim("   are u ok ?    ", " ") //去掉两头的空格
	fmt.Printf("s2 = #%s#\n", s2)
}
1
2
3
4
5
6
7
8
9
10
11
12

# 8,Fields

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

示例代码:

package main

import (
	"fmt"
	"strings"
)

func main() {
	//Fields去掉空格,把元素放入切片中
	s3 := strings.Fields("   are u ok ?    ")
	for i, data := range s3 {
		fmt.Println(i, ",", data)
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
微信 支付宝
#go
上次更新: 2024/06/13, 22:13:45
recover
字符串转换

← recover 字符串转换→

最近更新
01
记录二五年五一之短暂回归家庭
05-09
02
学习周刊-总第210期-2025年第19周
05-09
03
学习周刊-总第209期-2025年第18周
05-03
更多文章>
Theme by Vdoing | Copyright © 2017-2025 | 点击查看十年之约 | 浙ICP备18057030号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式