写点什么

【一 Go 到底】第二十三天 --- 字符串函数详解

作者:指剑
  • 2022-10-23
    重庆
  • 本文字数:2505 字

    阅读完需:约 8 分钟

【一Go到底】第二十三天---字符串函数详解

一、字符串常用函数

  1. 统计字符串长度 - len(str)

  2. 字符串遍历,同时处理字符串含有中文问题 - r:=[]rune(str)

  3. 字符串转整数 - n,err := strconv.Atol("123")

  4. 整数转字符串 - str = strconv.Itoa(12345)

  5. 字符串 转 []byte - var bytes = []byte("hello go")

  6. []byte 转字符串 - str = string([]byte{97,98,99})

  7. 10 进制转 2,8,16 进制 - str = strconv.FormateInt(123,2) // 2 换成 8,16

  8. 查找子串是否在指定的字符串中 - strings.Contains("seafood","foo") // 返回 true

  9. 统计一个字符串有几个指定的字串 - strings.Count("cheese","e") // 返回 4

  10. 不区分大小写的字符串比较(==是区分大小写) - fmt.Println(strings.EqualFold("abc", "Abc")) // true

  11. 返回子串在字符串第一次出现的 index 值,如果没有就返回 -1 - strings.Index("bbbabcd", "abc") // 3

  12. 返回子串在字符串最后一次 出现的 index,如没有返回-1 : strings.Lastlndex("go golang", "go")13.将指定的子串替换成另外一个子串: strings.Replacel"go go hello", "go", "go 语言", n) n 可以指定你希望替换几个,如果 n=-1 表示全部替换

  13. 按照指定的某个字符,为分割标识,将一个字符串拆分成字符串数组:strings.Split("hello,wrold,ok", ",")

  14. 将字符串的字母进行大小写的转换: strings.Tolower("Go") // go strings.ToUpper("Go") // GO

  15. 将字符串左右两边的空格去掉: strings.TrimSpace(" tn a lone gopher ntrn ")

  16. 将字符串左右两边指定的字符去掉: strings.Trim("! hello!", ”!") // ["hello"] //将左右两边!和""去掉

  17. 将字符串左边指定的字符去掉: strings.Trimleft ("! hello!"," !") // ["hello"] //将左边!和""去掉

  18. 将字符串右边指定的字符去掉: strings.TrimRight("! hello!", " !") // ["hello"] //将右边!和""去掉

  19. 判断字符串是否以指定的字符串开头: strings.HasPrefix("ftp://192.168.10.1", "ftp") // true

  20. 判断字符串是否以指定的字符串结束 strings.Hasufix("NLT abc.jpg", "abc") //false

二、案例分析


package main
import ( "fmt" "strconv" "strings")
func main() { // 字符串长度 str := "Hello,世界" // 字符串长度 = 12,一个中文占3个UTF-8长度 fmt.Println("字符串长度 = ", len(str))
// 遍历 []rune str2 := "Welcome to 重庆" str_new := []rune(str2) for i := 0; i < len(str_new); i++ { fmt.Printf("字符= %c\n", str_new[i]) }
// 字符串转整数 n, err := strconv.Atoi("123") if err != nil { fmt.Println("转换错误 ", err) } else { fmt.Println(n) }
// 数字转字符串 str_num := strconv.Itoa(123) fmt.Printf("str_num = %v, type = %T\n", str_num, str_num)
// 字符串转 []byte
var bytes = []byte("hello,Go") // 对应的数字是 字母的ascii编码 fmt.Printf("bytes = %v\n", bytes)
// []byte 转 字符串 str_b := string([]byte{97, 98, 99}) fmt.Printf("str_b = %v\n", str_b)
// 十进制转换
// 13对应二进制 str_bin := strconv.FormatInt(13, 2) fmt.Println("13对应二进制 = ", str_bin) // 113对应十六进制 str_hex := strconv.FormatInt(113, 16) fmt.Println("113对应二进制 = ", str_hex)
// 查找子串是否在特定字符串中
str_find := strings.Contains("seafood", "foo") fmt.Println("str_find 结果为 ", str_find)
// 统计字符串中指定子串的数量
num := strings.Count("abccddecccc", "c") fmt.Println("c的数量为 : ", num)
// 区分字符串比较(不分大小写) str_eq := strings.EqualFold("abC", "ABC") // str_eq 结果 true fmt.Println("str_eq 结果 ", str_eq)
// 返回子串第一次出现在字符串的index下标
index := strings.Index("HellAbccEeee", "e") // Index = 1 fmt.Println("Index = ", index)
// 返回子串最后一次出现在字符串的index下标 index = strings.LastIndex("HellAbccEeee", "e") // Index = 1 fmt.Println("Index = ", index)
// 替换子串
str_source := "Abacadaeaf" // 替换不影响原本的字符串 str_rp := strings.Replace(str_source, "a", "A", -1) // 替换后的字符串为: AbAcAdAeAf fmt.Println("替换后的字符串为: ", str_rp)
// 分割字符串 // 按 "," 进行拆分 strArr := strings.Split("hello,world,golang", ",") // strArr = [hello world golang] fmt.Println("strArr = ", strArr) // 遍历该数组 for i := 0; i < len(strArr); i++ { fmt.Printf("strArr[%v]=%v\n", i, strArr[i]) }
// 字符串大小写转换
strl := "lowstring" stru := "UPPERstring" strmix := "lowUPPer" // 转换为大写 strl = strings.ToUpper(strl) // 转换为小写 stru = strings.ToLower(stru) // 转换为 大写 strmix = strings.ToUpper(strmix) fmt.Printf("strl = %v, stru = %v, strmix = %v\n", strl, stru, strmix)
// 去掉字符串左右两边空格 // str = "Nice to see you" str = strings.TrimSpace(" Nice to see you ") fmt.Printf("str = %q\n", str)
// 去掉字符串两边指定字符串
// 去掉左右两边的 * ! 和空格 // 返回的是一个新的字符串 // str = "welcome" str = strings.Trim("***! welcome !****", " !*") fmt.Printf("str = %q\n", str)
// 去掉左边指定字符 // str = "welcome !****" str = strings.TrimLeft("***! welcome !****", " !*") fmt.Printf("str = %q\n", str)
// 去掉右边指定字符 // str = "***! welcome" str = strings.TrimRight("***! welcome !****", " !*") fmt.Printf("str = %q\n", str)
// 判断字符串是否以指定字符串开头 // result = true result := strings.HasPrefix("https://192.168.1.1", "https") fmt.Println("result = ", result)
// 判断字符串是否以指定字符串结尾 // result = true result = strings.HasSuffix("1008611abcd", "bcd") fmt.Println("result = ", result)}
复制代码


发布于: 刚刚阅读数: 4
用户头像

指剑

关注

InfoQ签约作者 2022-07-13 加入

AWS社区建设者,AWS学生大使,微软学生大使,阿里云签约作者,Info Q签约作者,CSDN博客专家,华为云云享专家,OPS社区创始成员

评论

发布
暂无评论
【一Go到底】第二十三天---字符串函数详解_Go_指剑_InfoQ写作社区