1. package main
    2. import (
    3. "fmt"
    4. "strconv"
    5. "strings"
    6. )
    7. func main() {
    8. str := "hello你好" //一个中文字符占用三个字节
    9. // 1. 统计字符串长度 len(str)
    10. fmt.Println(len(str)) //11
    11. // 2. 字符串遍历,同时处理有中文的问题 - 切片遍历
    12. r := []rune(str)
    13. for i := 0; i < len(r) ;i++ {
    14. fmt.Printf("%c ",r[i])
    15. }
    16. fmt.Println() //h e l l o 你 好
    17. // 3. 字符转与整数的相互转化
    18. // Atoi
    19. n,err := strconv.Atoi("333")
    20. // s=hello 输出 strconv.Atoi: parsing "hello": invalid syntax
    21. if err != nil {
    22. fmt.Println("转换错误",err)
    23. }else {
    24. fmt.Println(n) //333
    25. }
    26. //Itoa
    27. s := strconv.Itoa(33333)
    28. fmt.Println(s) //33333
    29. // 4. 字符串转 []byte byte直接输出为ascii码
    30. var bytes = []byte(str)
    31. fmt.Println(bytes) //[104 101 108 108 111 228 189 160 229 165 189]
    32. // 5. []byte 转换为字符串
    33. str5 := string(bytes)
    34. fmt.Println(str5) //hello你好
    35. // 6. 10进制转化为 2,8,16进制
    36. //整数,进制 返回string
    37. fmt.Println(strconv.FormatInt(666,16)) //29a
    38. // 7. 匹配子串
    39. fmt.Println(strings.Contains("abcdefg","abc")) //true
    40. // 8. 统计匹配子串个数
    41. fmt.Println(strings.Count("abcdefeee","e")) //4
    42. // 9. 字符串比较
    43. //区分大小写 ==
    44. fmt.Println("abc"=="abC") //false
    45. //不区分大小写
    46. fmt.Println(strings.EqualFold("abc","ABC")) //true
    47. // 10. 返回子串出现index值,找不到则返回-1
    48. fmt.Println(strings.Index("abcdefgcde","cde")) //2
    49. fmt.Println(strings.LastIndex("abcdefgcde","cde")) //7
    50. // 11. 子串替换,最后指定替换几个 -1表示全部替换
    51. str11 := strings.Replace(str,"hello","tomorrow",-1)
    52. fmt.Println(str11) //tomorrow你好
    53. fmt.Println(str) //hello你好
    54. // 12. 字符串分割成数组
    55. split := strings.Split("a,b,c,d,e,f", ",")
    56. fmt.Println(split) //[a b c d e f]
    57. // 13. 大小写转化
    58. str13 := "goLang,HEllo"
    59. fmt.Println(strings.ToLower(str13)) //golang,hello
    60. fmt.Println(strings.ToUpper(str13)) //GOLANG,HELLO
    61. fmt.Println(str13) //goLang,HEllo
    62. // 14. 字符串掐头去尾 trim
    63. str14 := " !d d ?d !??"
    64. //去掉左右空格
    65. fmt.Println(strings.TrimSpace(str14)) //!d d ?d !??
    66. //指定去掉两边字符
    67. fmt.Println(strings.Trim(str14,"?! ")) //d d ?d
    68. //TrimLeft 只去掉左边
    69. //TrimRight 只去掉右边
    70. // 15. 判断头尾
    71. fmt.Println(strings.HasPrefix("abcdefg","abc")) //true
    72. fmt.Println(strings.HasSuffix("abcdefg","fg")) //true
    73. }