go语言中常用的功能之十三(字符串中的常用操作函数)

该博客主要介绍了Go语言中常用的字符串操作函数,包括常用操作函数概述、去掉指定字符、字符串替换、判断是否包含子串、字段自定义分割、字符串自定义修改以及自定义查找规则等内容,还提及返回索引未找到时为 -1。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

go中常用的字符串操作函数

1. 常用操作函数概述

凡是返回索引的 没找到都是返回 -1

函数说明
Count(str,substr) int统计子串出现的次数
Contains(str,substr) bool包含子串么
ContainsAny(str,chars) bool包含任何unicode字符(\r\n)
ContainsRune(str,rune) bool包含unicode单个字符
LastIndex(str,substr) int最后一次出现的index位置 中文会算成 3个字符
IndexByte(str,char) int第一次字符出现的位置 中文无法使用
IndexRune(str,rune) int第一次unicode字符出现的位置
IndexAny(str,chars) int返回任何unicode字符(\r\n)第一次出现的位置
LastIndexAny(str,chars) int返回任何unicode字符(\r\n)最后一次出现的位置
LastIndexByte(str,char) int最后一次字符出现的位置 中文无法使用
SplitN(str,sep,n) []stringn是切分成几个string 如果是 1不切分 n 前n-1切分 最后一份不管包含多少个sep 都合成一个字符串 不做切分
SplitAfterN(str,sep,n) []string切分保留分割符
Split(str,seq) []string正常切分
SplitAfter(str,seq) []string正常切分并保留分隔符
Fields(str) []string根据空格分割所有
FieldsFunc(str func(r rune)bool{})根据指定规则拆分字符串
Join([]string,sep)根据指定的分割符合并字符串
HasPrefix(str,prex)以什么开头
HasSuffix(str,sufx)以什么结尾
Map(func(rune)rune,str) string根据自定义函数对字符串进行修改并返回
Repeat(str,n) string重复某个字符串n次
ToUpper(str)大写
ToLower(str)小写
TrimLeftFunc(str,func(rune)rune) string左侧去指定字符
TrimRightFunc(str,func(rune)rune) string右侧去指定字符
TrimFunc(str,func(rune)rune) string倆侧去指定字符
IndexFunc(str,func(rune)bool) int自定义第一次查找规则
LastIndexFunc(str,func(rune)bool) int自定义最后一次查找规则
Trim(str,cutset)这里cutset是一个集合字符串 ";:,]"等等
TrimLeft(str,cutset)去左侧指定字符
TrimRight(str,cutset)去右侧指定字符
TrimSpace(str)去空格
TrimPrefix(str,prex)去指定前缀
TrimSuffix(str,sufx)去指定后缀
Replace(str,oldstr,newstr,n)替换 n为-1 替换全部
ReplaceAll(str,oldstr,newstr)替换全部
EqualFold(str,t)比对是否所有的unicode字符都相等
Index(str,substr)第一次出现的位置

2. 去掉指定字符

/**
  自定义的trim函数会遍历整个字符串 ,返回每个字符,如果回调函数中出现的字符 返回 true
  且 他后面|前面的所有字符 要么返回true 要么没有 这样该字符才会被trim掉
*/
str := "[abebcegefet]"
res := strings.TrimFunc(str, func(r rune) bool {
	return r == ']' || r == '[' || r == '哈' || r == 'c'
})
fmt.Println(res) //ab

/**
  函数结果与上面的完全一样
*/
res2 := strings.Trim(str, "[]哈c")
fmt.Println(res2) //ab

3. 字符串替换

res3 := strings.Replace(str, "哈", "ha", 1)  //替换指定个数
fmt.Println(res3)                           //[abha哈c]
res4 := strings.Replace(str, "哈", "ha", -1) //替换全部
fmt.Println(res4)    //[abhahac]

4. 是否包含子串

res5 := strings.Contains(str, "哈哈")
fmt.Println(res5) //true

//------------------------------
res6 := strings.Count(str, "哈哈")
fmt.Println(res6) //1

//------------------------------
ress := strings.Fields("a b c f d g")
for k, v := range ress {
	fmt.Println(k, v)
}

5. 字段自定义分割

fmt.Println(strings.FieldsFunc("a,b;c.f\nd\tg", func(r rune) bool {
		return strings.ContainsRune("\n\t ,;.", r)
	}))

6. 字符串自定义修改

resr := strings.Map(func(r rune) rune {
	if strings.ContainsRune("\n\t ,;.", r) {
		return ' '
	}
	return r
}, "a,b;c.f\nd\tg")
fmt.Println(resr)

7.自定义查找规则

比如我们不希望出现的字符是 “天” 那他第一次不出现的时候 我们认为是我们
所要寻找的位置

fmt.Println(strings.IndexFunc("天天都需要你的爱", func(r rune) bool {
		return r != '天'
	})) //6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值