字符串函数

字符串中常用的函数:

字符串在我们程序开发中,使用的非常多的,常用的函数我们需要掌握:

1)统计字符串的长度,按字节len(str)

func main() {
  //golang的编码统一为UTF-8的(ascii码的字符(数字和字母) 占一个字节,汉字占用3个字节 )
  str := "hello北"
  fmt.Println("str len=", len(str))   //按字节返回的
}

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

func main() {
  str2 := "hello北京"
  r := []rune(str2)
  for i := 0; i < len(r); i++ {
    fmt.Printf("字符=%c ", r[i])
  }
}

3)字符串转整数: n, err := strconv.Atoi("12")

func main() {
  n, err := strconv.Atoi("123")
  if err != nil {
    fmt.Println("转换错误", err)
  } else {
    fmt.Println("转换后的结果是", n)
  }
}

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

func main() {
  str = strconv.Itoa(12345)
  fmt.Printf("str=%v, str=%T ", str, str)
}

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

func main() {
  var bytes = []byte("hello go")
  fmt.Printf("bytes=%v ", bytes)
}

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

func main() {
  str := string([]byte{97,98,99})
  fmt.Printf("str=%v ", str)
}

7)10进制转 2, 8, 16进制: str = strconv.FormatInt(123, 2) // 2->8, 16

func main() {
  str = strconv.FormatInt(123, 2)
  fmt.Printf("123对应的二进制是=%v ", str)
  str = strconv.FormatInt(123, 16)
  fmt.Printf("123对应的16进制是=%v ", str)
}

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

func main() {
  b := strings.Contains("seafood", "mary")
  fmt.Printf("b=%v ",b) //false
}

9)统计一个字符串有几个指定的子串:strings.Count("ceheese", "e")   //4

func main() {
  num := strings.Count("ceheese", "se")
  fmt.Printf("num=%v ", num)
}

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

func main() {
  b = strings.EqualFold("abc","Abc")
  fmt.Printf("b=%v ", b)   //true

  fmt.Println("结果", "abc" == "Abc")   //区分大小写
}

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

func main() {
  index := strings.Index("NLT_abc", "abc")
  fmt.Printf("index=%v ", index)
}

12)返回子串在字符串最后一次出现的index,如没有返回-1:strings.LastIndex("go golang", "go")

func main() {
  index := strings.LastIndex("go golang", "go") //3
  fmt.Printf("index=%v ", index)
}

13)将指定的子串替换成另外一个子串:strings.Replace("go go hello","go", "go语言", n) 意思是想把go字母替换成"go语言" n可以指定你希望替换几个,如果n=-1表示全部替换

func main() {
  str2 := "go go hello"
  str = strings.Replace(str2,"go", "北京啊", -1)
  fmt.Printf("str=%v str2=%v ", str, str2)
}

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

func main() {
  strArr := strings.Split("hello,world,ok",",")
  for i := 0; i < len(strArr); i++ {
    fmt.Printf("str[%v]=%v ", i, strArr[i])
  }
  fmt.Printf("strArr=%v ", strArr)
}

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

func main() {
  str = "goLang Hello"
  str = strings.ToLower(str)
  str2 = strings.ToUpper(str)
  fmt.Printf("str=%v ", str)   //golang hello
  fmt.Printf("str2=%v ", str2)   //GOLANG HELLO
}

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

func main() {
  str = strings.TrimSpace(" tn a lone gopher ntrn ")
  fmt.Printf("str=%q ", str)
}

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

func main() {
  str = strings.Trim("! he!llo! ", " !")
  fmt.Printf("str=%q ", str)
}

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

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

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

func main() {
  b = strings.HasPrefix("ftp://192.168.10.1", "ftp")
  fmt.Printf("b=%v ",b)
}

21)判断字符串是否以指定的字符串结束:strings.HasSuffix("NLT_abc.jpg", "abc")   //false

原文地址:https://www.cnblogs.com/green-frog-2019/p/11355210.html