golang 字符串
字符串常用系统函数
1.统计字符串长度:len(str)
这个函数是内建函数,存在于内建包builtin中,可以不用导入直接使用。golang的编码统一为utf-8(ascii的字符(字母和数字)占一个字节,汉字占用三个字节)。len()是按字节数返回的
func main() { //golang的编码统一为utf-8(ascii的字符(字母和数字)占一个字节,汉字占用三个字节) //len是按字节数返回的所以返回是8::hello占用5个字节,北占用三个字节。 var str string = "hello北" fmt.Println(len(str)) }
2.字符串遍历,同时有处理中文的问题 r := []rune(str)。用for遍历中文字符会有乱码问题,需要先使用[]rune(str)来转换再进行遍历。用键值循环for range可以直接处理中文。
func main() {
//用for遍历中文字符会有乱码问题,需要先使用[]rune(str)来转换再进行遍历。
var str string = "hello北京" str1 := []rune(str) for i := 0; i < len(str1); i++ { fmt.Printf("字符串=%c\n", str1[i]) } }
3.字符串转整数 n, err := strconv.Atoi("12)。如果返回err不为空,则转换失败抛出错误。常用于对数据类型做校验。
func main() { n, err := strconv.Atoi("12") if err != nil { fmt.Println("转换错误:", err) } else { fmt.Println("转换的结果为:", n) } }
4.整数转字符串 str = strconv.Itoa(12345)
func main() { str3 := strconv.Itoa(12345) fmt.Println("str3=%v, str3=%T", str3, str3) }
5.字符串转二进制[]byte: var bytes = []byte("hello go)。强制转换切片,用于将字符串写入二进制文件
func main() { var bytes = []byte("hello go") fmt.Println(bytes) }
6.二进制转字符串 str := string([]byte{97, 98, 99})。强制转换
func main() { str4 := string([]byte{97, 98, 99}) fmt.Println(str4) }
7.10进制转 2,8,16进制:str = strconv.FormatInt(123,2) str = strconv.FormatInt(123,8) str = strconv.FormatInt(123,16)
func main() { str5 := strconv.FormatInt(123, 2) fmt.Println(str5) str5 = strconv.FormatInt(123, 8) fmt.Println(str5) str5 = strconv.FormatInt(123, 16) fmt.Println(str5) }
8.查找子串是否在指定字符串中。strings.Contains("seafood", "foo")查找子字符串foo是否存在于字符串seafood中,若是返回true
func main() { res1 := strings.Contains("seafood", "foo") fmt.Println(res1) }
9.统计字符串中有几个指定的子串
func main() { res2 := strings.Count("hehehello", "he") fmt.Println(res2) }
10.不区分大小写的字符串比较
func main() { res3 := strings.EqualFold("abc", "ABc") fmt.Println(res3) //true 不区分大小写 fmt.Println("结果", "abc" == "ABc") //false 区分大小写 }
11.返回子串在字符串中第一次出现的index值,如果没有出现返回-1
func main() { res4 := strings.Index("hahelo", "he") fmt.Println(res4) }
12.返回子串在字符串中最后一次出现的index值,如果没有出现返回-1
func main() { res5 := strings.LastIndex("hehahal", "ha") fmt.Println(res5) }
13.在字符串中将指定子串替换成另一个子串,res6 := strings.Replace("go go hello", "go", "go语言", n),如果n=-1,则全部替换
func main() { res6 := strings.Replace("go go hello", "go", "go语言", -1) fmt.Println(res6) }
14.按照指定的某个字符,为分割字符,将一个字符串拆分成字符串数组。后面的""中填写分隔符
func main() {
str6 := "hello,world,ok"
res7 := strings.Split(str6, ",")
for _, val := range res7 {
fmt.Println(val)
}
}// go \n hello\n ok
15.将字符串的字母进行大小写的转换
func main() { res8 := strings.ToLower("Go")//转换成小写,go fmt.Println(res8) res9 := strings.ToUpper("Go") //转换成大写:GO }
16.将字符串左右两边的空格去掉
str7 := " tn a lone gopher ntrn " res11 := strings.TrimSpace(str7) fmt.Println(res11) }//tn a lone gopher ntrn
17.将字符串左右两边指定的字符去掉
func main() { str8 := "tn a lone gopher ntrntn" res10 := strings.Trim(str8, "tn ") fmt.Println(res10) }//a lone gopher ntr
18.将字符串左边指定的字符去掉
func main() { str8 := "tn a lone gopher ntrntn" res12 := strings.TrimLeft(str8, "tn ") fmt.Println(res12) }//a lone gopher ntrntn
19.将字符串右边指定的字符去掉
func main() { str8 := "tn a lone gopher ntrntn" res13 := strings.TrimRight(str8, "tn ") fmt.Println(res13) }//tn a lone gopher ntr
20.判断字符串是否以指定的字符串开头
func main() { str8 := "ltn a lone gopher ntrntn" res14 := strings.HasPrefix(str8, "lt") fmt.Println(res14) }//true
21.判断字符串是否以指定的字符串结束
func main() { str8 := "ltn a lone gopher ntrntn" res14 := strings.HasSuffix(str8, "lt") fmt.Println(res14) }//false
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?