package mainimport ( "fmt" "strconv" "strings")func main() { str := "hello你好" //一个中文字符占用三个字节 // 1. 统计字符串长度 len(str) fmt.Println(len(str)) //11 // 2. 字符串遍历,同时处理有中文的问题 - 切片遍历 r := []rune(str) for i := 0; i < len(r) ;i++ { fmt.Printf("%c ",r[i]) } fmt.Println() //h e l l o 你 好 // 3. 字符转与整数的相互转化 // Atoi n,err := strconv.Atoi("333") // s=hello 输出 strconv.Atoi: parsing "hello": invalid syntax if err != nil { fmt.Println("转换错误",err) }else { fmt.Println(n) //333 } //Itoa s := strconv.Itoa(33333) fmt.Println(s) //33333 // 4. 字符串转 []byte byte直接输出为ascii码 var bytes = []byte(str) fmt.Println(bytes) //[104 101 108 108 111 228 189 160 229 165 189] // 5. []byte 转换为字符串 str5 := string(bytes) fmt.Println(str5) //hello你好 // 6. 10进制转化为 2,8,16进制 //整数,进制 返回string fmt.Println(strconv.FormatInt(666,16)) //29a // 7. 匹配子串 fmt.Println(strings.Contains("abcdefg","abc")) //true // 8. 统计匹配子串个数 fmt.Println(strings.Count("abcdefeee","e")) //4 // 9. 字符串比较 //区分大小写 == fmt.Println("abc"=="abC") //false //不区分大小写 fmt.Println(strings.EqualFold("abc","ABC")) //true // 10. 返回子串出现index值,找不到则返回-1 fmt.Println(strings.Index("abcdefgcde","cde")) //2 fmt.Println(strings.LastIndex("abcdefgcde","cde")) //7 // 11. 子串替换,最后指定替换几个 -1表示全部替换 str11 := strings.Replace(str,"hello","tomorrow",-1) fmt.Println(str11) //tomorrow你好 fmt.Println(str) //hello你好 // 12. 字符串分割成数组 split := strings.Split("a,b,c,d,e,f", ",") fmt.Println(split) //[a b c d e f] // 13. 大小写转化 str13 := "goLang,HEllo" fmt.Println(strings.ToLower(str13)) //golang,hello fmt.Println(strings.ToUpper(str13)) //GOLANG,HELLO fmt.Println(str13) //goLang,HEllo // 14. 字符串掐头去尾 trim str14 := " !d d ?d !??" //去掉左右空格 fmt.Println(strings.TrimSpace(str14)) //!d d ?d !?? //指定去掉两边字符 fmt.Println(strings.Trim(str14,"?! ")) //d d ?d //TrimLeft 只去掉左边 //TrimRight 只去掉右边 // 15. 判断头尾 fmt.Println(strings.HasPrefix("abcdefg","abc")) //true fmt.Println(strings.HasSuffix("abcdefg","fg")) //true}