go语言—字符串处理(strings包)

go语言使用strings包来完成对字符串的主要处理操作

1、前缀和后缀

HasPrefix()判断字符串是否以xxx开头

s := "hellogood"
// 判断字符串s是否以hell开头
strings.HasPrefix(s,"hell") //true

HasSuffix()判断字符串s是否以xxx结尾

s := "hellogood"
// 判断字符串s是否以good结尾
strings.HasSuffix(s,"good") //true

2、字符串包含关系

Contains()判断字符串s是否包含xxx

s := "今天是晴天"
strings.Contains(s, "晴天") //true

3、判断子字符串或字符在父字符串中出现的位置(索引)

Index()返回字符串或字符xxx在字符串中的索引(字符第一次出现的索引位置),-1表示不包含字符串

s1 := "hello"
indexS1 := strings.Index(s1, "l") // 字符l在字符串s1中第一次出现的位置索引
fmt.Println(indexS1) // 2


s2 := "world"
indexS2 := strings.Index(s2, "kk") // 字符串“kk”不包含在s2中
fmt.Println(indexS) // 返回-1

LastIndex()返回字符串或字符xxx在字符串中最后出现位置的索引,-1表示不包含字符串

s1 := "today is good"
lastIndexS1 := strings.LastIndex(s1, "o") //o在字符串最后出现的位置的索引
fmt.Println(lastIndexS1) // 11

如果要查询非ASCII 编码的字符在父字符串中的位置,即中文等复杂字符,建议使用以下函数来对字符进行定位

s := "你好吗在干嘛你"
runeIndex := strings.IndexRune(s, '在') //一个汉字3byte
fmt.Println(runeIndex) // 9

4、字符串替换

Replace()用于将字符串中的前n个字符串old 替换为字符串 new,并返回一个新字符串,如果 n = -1 则替换所有字符串 old 为字符串 new
strings.Replace(str, old, new string, n int)

s := "howareyouhowsiihow" //字符串s中一共出现三个how
s2 := strings.Replace(s, "how", "who", 2)  // 将前两个how替换为who
fmt.Println(s2) // whoareyouwhosiihow

s := "hello world"
s2 := strings.Replace(s, "l", "k", -1)  // 将l全部替换为k
fmt.Println(s2) // hekko workd

5、统计字符串出现的次数

Count()用于计算字符串str在字符串s中出现的非重叠次数
strings.Count(s, str string)

s := "CCIC CCNU GHTYCC"
countS := strings.Count(s,"CC")
fmt.Println(countS) // 3

6、字符串的重复

Repeat()用于重复count次字符串s并返回一个新的字符串
strings.Repeat(s, count int)

s := "who are you"
newS := strings.Repeat(s,3) // 将字符串s重复三次
fmt.Println(newS)

7、修改字符串大小写

ToLower() 将字符串中的 Unicode 字符全部转换为相应的小写字符

s := "Hello GO"
lowerS := strings.ToLower(s)
fmt.Println(lowerS) // hello go

ToUpper() 将字符串中的 Unicode 字符全部转换为相应的大写字符

s := "Hello GO"
upperS := strings.ToUpper(s)
fmt.Println(upperS) // HELLO GO

8、修剪字符串

strings.TrimSpace(s) 用来剔除字符串开头和结尾的空白符号

s := "  hello go  "
fmt.Println(strings.TrimSpace(s)) // 剔除两边空格

剔除指定字符,使用strings.Trim(s, “xxx”) 来将开头和结尾的 xxx 去除掉

s := "ohello go"
fmt.Println(strings.Trim(s,"o")) // 将字符首尾的o剔除,hello g

strings.TrimLeft()剔除开头字符

s := "hello"
fmt.Println(strings.TrimLeft(s,"h")) 

strings.TrimRight()剔除结尾字符

s := "hello  "
fmt.Println(strings.TrimRight(s,"  ")) 

9、分割字符串

strings.Fields(str) 会利用一个或多个空白符号作为分隔符将字符串分割成若干小块,并返回一个slice,如果字符串只包含空白符号,则返回一个长度为0的slice

s := "Hello Python Hello Go"
FiledS := strings.Fields(s)
fmt.Println(filedS) // [Hello Python Hello Go]

strings.Split(s, sep) 用于自定义分割符号来对指定字符串进行分割,同样返回 slice

s := "Hello*Python*Hello*Go"
splitS := strings.Split(s,"*")
fmt.Println(splitS) // [Hello Python Hello Go]

10、拼接slice到字符串

Join()用于将元素类型为string的slice使用分割符号来拼接组成一个字符串
strings.Join(sl []string, sep string)

sliceStr := []string{"hello","world","go","python"}
newStr := strings.Join(sliceStr,"_") // 用_将切片内容拼接成一个字符串
fmt.Println(newStr) // hello_world_go_python

11、从字符串中读取内容

strings.NewReader(str) 用于生成一个 Reader 并读取字符串中的内容,然后返回指向该 Reader 的指针

str := "Hello go and python"
readStr := strings.NewReader(str)
fmt.Printf("%T\n", readStr) // 获取数据类型    *strings.Reader
fmt.Printf("%v\n", readStr) // 获取数据的值    &{Hello go and python 0 -1}
fmt.Printf("%v\n", readStr) // 获取数据地址    0x14000130000

从其它类型读取内容的函数还有:

  • Read() 从 []byte 中读取内容
  • ReadByte() 和 ReadRune() 从字符串中读取下一个 byte 或者 rune
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值