Golang 常见字符串操作

本文介绍了Go语言中字符串的常见操作,包括多行字符串声明、转义字符、字符串长度计算、子串操作、查找位置、计数、判断前后缀、比较、拆分、重复、替换、映射和翻转等。特别提到了Go对Unicode字符的支持,以及在处理字符串时需要注意的UTF-8编码问题。
摘要由CSDN通过智能技术生成

1 字符串

1.1 多行字符串声明

Go把字符串定义为一个多行的字符串,使用 ``

s1 :=  `hello
world
LOL`
	fmt.Println(s1)
/*
打印结果为:
		hello
		world
		LOL
*/

1.2 转义字符

Go 语言的字符串常见转义符包含回车、换行、单双引号、制表符等

转义符 意义
\r 回车符(返回行首)
\n 换行符(直接跳到下一行的同列位置)
\t 制表符
单引号
" 双引号
\ 反斜杠
fmt.Println("hello\"world!")
// 输出结果:hello"world!

2 字符串操作

常见字符串的操作有:

2.1 字符串求长度

字符串中所有字符都是单字节字符时,使用len
函数获取字符串的长度

s := "hello world,世界"
fmt.Println(len(s)) //18
fmt.Println(utf8.RuneCountInString(s)) //14

len() 函数的返回值的类型为 int,表示字符串的 ASCII 字符个数或字节长度。由于“世界”的字符个数应该是2,上下的差异是由于 Go 语言的字符串都以 UTF-8 格式保存,每个中文占用 3 个字节,因此使用 len() 获得两个中文文字对应的 6 个字节。

如果希望按习惯上的字符个数来计算,就需要使用 Go 语言中 UTF-8 包提供的 RuneCountInString() 函数,统计 Uncode 字符数量。

2.2 求子串操作

2.2.1 Contains关键字

// 子串substr在s中,返回true
func Contains(s, substr string) bool
// chars中任何一个Unicode代码点在s中,返回true
func ContainsAny(s, chars string) bool
// Unicode代码点r在s中,返回true
func ContainsRune(s string, r rune) bool //rune?

Go中的字符有两种类型:uint以及rune
1.uint8类型,或者叫 byte 型,代表了ASCII码的一个字符。
2.rune类型,代表一个 UTF-8字符。
当需要处理中文、日文或者其他复合字符时,则需要用到rune类型。rune类型实际是一个int32。

Go 使用了特殊的 rune 类型来处理 Unicode,让基于 Unicode 的文本处理更为方便,也可以使用 byte 型进行默认字符串处理,性能和扩展性都有照顾。

2.3 查找主串中字符或者子串位置

查找首次出现位置的函数:

//返回子串sep在字符串s中第一次出现的索引值,不在的话返回-1.
func Index(s, sep string) int
//chars中任何一个Unicode代码点在s中首次出现的位置,不存在返回-1
func IndexAny(s, chars string) int
//查找字符 c 在 s 中第一次出现的位置,其中 c 满足 f(c) 返回 true
func IndexFunc(s string, f func(rune) bool) int   //rune类型是int32别名,UTF-8字符格式编码。
//返回字符c在s中第一次出现的位置
func 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值