字符串的常用操作

视频学习地址:Go零基础入门_在线视频教程-CSDN程序员研修院

一. 转义符

1、常见转义符

|------|----------------------|
| \t | 制表符(Tab) |
| \n | 换行符(New Line) |
| \\ | 反斜杠符号(\) |
| \" | 双引号(") |
| \r | 回车符(Carriage Return) |

复制代码
var s1 = "hello xt\nhello,lxc"
fmt.Println(s1)
var s2 = "my name is \"xt\""
fmt.Println(s2)
var s3 = "D:\\installation\\Go"
fmt.Println(s3)
2、其他转义符

|-----|---------------------|
| \a | 响铃符(Bell) |
| \b | 退格符(Backspace) |
| \f | 换页符(Form Feed) |
| \v | 垂直制表符(Vertical Tab) |
| \' | 单引号(') |
| \? | 代表一个问号 |

复制代码
var s4 = "l\vxc"
fmt.Println(s4)
3、多行字符串

语法: ``

复制代码
var s5 = `一
二
三
`
fmt.Println(s5)

二. 格式化输入输出

|-----|-------------------|
| %d | 十进制整数 |
| %b | 二进制整数 |
| %o | 八进制整数 |
| %x | 十六进制整数(小写字母) |
| %X | 十六进制整数(大写字母) |
| %f | 浮点数 |
| %e | 科学计数法表示的浮点数 |
| %E | 科学计数法表示的浮点数(大写字母) |
| %s | 字符串 |
| %c | 字符 |
| %t | 布尔值(true/false) |
| %p | 指针的十六进制表示 |
| %v | 使用默认格式输出变量 |
| %+v | 输出结构体字段的名称和值 |
| %#v | 输出Go语言的语法表示 |
| %T | 输出变量的类型 |

复制代码
age := 18
fmt.Printf("你的年龄是:%d", age)

age1 := 18
fmt.Printf("你的年龄的二进制数:%b", age1)

age2 := 18
fmt.Printf("类型是:%T", age2)

三. 字符串拼接

1.使用 + 号拼接
复制代码
str1 := "hello"
str2 := "lxc"
fmt.Println(str1 + " " + str2)
2.使用fmt.Sprintf
复制代码
str1 := "hello"
str2 := "lxc"
str3 := fmt.Sprintf("%s %s", str1, str2)
fmt.Println(str3)
3.Join
复制代码
str1 := "hello"
str2 := "lxc"

sli := []string{str1, str2}
str4 := strings.Join(sli, " ")
fmt.Println(str4)
4.bytes.Buffer
复制代码
str1 := "hello"
str2 := "lxc"
var bt bytes.Buffer
bt.WriteString(str1)
bt.WriteString(" ")
bt.WriteString(str2)
str5 := bt.String()
fmt.Println(str5)
5.strings.Builder 官方推荐 效率最高
复制代码
str1 := "hello"
str2 := "lxc"
var build strings.Builder
build.WriteString(str1)
build.WriteString(" ")
build.WriteString(str2)
str6 := build.String()
fmt.Println(str6)

四. 字符串的常用方法

|-----------------------------------|----------------------------------------|
| len(s) | 返回字符串s的长度(字节数) |
| + | 连接两个字符串 |
| strings.Contains(s, substr) | 判断字符串s是否包含子串substr,返回布尔值 |
| strings.Count(s, substr) | 返回字符串s中子串substr出现的次数 |
| strings.EqualFold(s1, s2) | 不区分大小写地比较两个字符串s1和s2是否相等,返回布尔值 |
| strings.Index(s, substr) | 返回子串substr在字符串s中第一次出现的索引位置,如果未找到则返回-1 |
| strings.LastIndex(s, substr) | 返回子串substr在字符串s中最后一次出现的索引位置,如果未找到则返回-1 |
| strings.Replace(s, old, new, n) | 在字符串s中将old替换为new,替换次数为n,如果n为-1则替换所有 |
| strings.Split(s, sep) | 根据分隔符sep将字符串s拆分为一个字符串数组 |
| strings.TrimSpace(s) | 去除字符串s两端的空白字符(包括空格、制表符、换行符等) |
| strings.ToUpper(s) | 将字符串s转换为大写形式 |
| strings.ToLower(s) | 将字符串s转换为小写形式 |
| strings.Join(slice, sep) | 将一个字符串切片slice通过分隔符sep连接成一个字符串 |
| strings.HasPrefix(s, prefix) | 判断字符串s是否以子串prefix开头,返回布尔值 |
| strings.HasSuffix(s, suffix) | 判断字符串s是否以子串suffix结尾,返回布尔值 |
| strings.Repeat(s, count) | 将字符串s重复count次,返回一个新的字符串 |
| strings.ToLowerSpecial(s, locale) | 将字符串s转换为小写形式,并根据指定的地区locale进行特殊处理 |
| strings.ToUpperSpecial(s, locale) | 将字符串s转换为大写形式,并根据指定的地区locale进行特殊处理 |
| strings.Fields(s) | 根据空白字符(空格、制表符、换行符等)将字符串s拆分为一个字符串数组 |
| strings.FieldsFunc(s, f) | 根据自定义函数f将字符串s拆分为一个字符串数组 |
| strings.Trim(s, cutset) | 去除字符串s两端包含在cutset中的字符 |
| strings.TrimLeft(s, cutset) | 去除字符串s左侧包含在cutset中的字符 |
| strings.TrimRight(s, cutset) | 去除字符串s右侧包含在cutset中的字符 |

相关推荐
用户6757049885021 天前
你知道 Go 结构体和结构体指针调用的区别吗?一文带你彻底搞懂!
后端·go
唐青枫1 天前
别把泛型写复杂了:Go generic 从类型参数到实战封装
go
GetcharZp2 天前
告别OOM!用Go+libvips实现30000×50000超大图片的流式瓦片服务
后端·go
妙码生花5 天前
从 PHP 到 AI + Golang,程序员自救转型手记(八):设计管理员模型、热重载配置
前端·后端·go
tyung6 天前
Go 手写 Wait-Free MPSC 无界队列:SwapPointer 实现多生产者无锁入队
后端·go
陈明勇6 天前
Go 1.26 新特性回顾:语言增强、工具升级与 Green Tea GC 默认启用
后端·go
妙码生花7 天前
从 PHP 到 AI + Golang,程序员自救转型手记(二):目录结构、初始化 GIT、设计并开发配置系统
前端·后端·go
leeyi7 天前
Deer-Go:字节 Deer-Flow 的 Go 移植,深度研究 Agent 全拆解
go·aigc·agent
Bolt8 天前
TypeScript 7.0 来了:当 tsc 用 Go 重写之后
javascript·typescript·go
Go_error8 天前
Datatypes:Go 轻松支持数据库JSON类型
后端·go