package main
import (
"fmt"
"strconv"
"strings"
)
func main() {
//1.len()统计字符长度
str := "hello" //golang中的编码统一为utf-8(ascii的字符(字母和数字)占一个字节,汉字占三个字节)
fmt.Println(len(str))
//2.字符串遍历时,同时处理有中文的问题r:=[]rune()
str2 := "2008!北京欢迎您!"
r := []rune(str2)
for i := 0; i < len(r); i++ {
fmt.Printf("字符%d=%c\n", i, r[i])
}
//3.字符串转整数:n,err := strconv.Atoi()
n, err := strconv.Atoi("123456") //检验数字字符串转整数
if err != nil {
fmt.Println("转换错误", err)
} else {
fmt.Println("转成的结果是", n)
}
//4.整数转字符串 str := strconv.Itoa()
str3 := strconv.Itoa(123)
fmt.Printf("str = %v, str = %T\n", str3, str3)
//5.字符串转[]byte()
var bytes = []byte("hello go") //字母编码
fmt.Printf("byte = %v\n", bytes)
//6.ascii码 []byte转字符串
str4 := string([]byte{97, 98, 99}) //编码转字符
fmt.Println("str = ", str4)
//7.十进制转2.8.16进制
str5 := strconv.FormatInt(123, 2)
str6 := strconv.FormatInt(123, 8)
str7 := strconv.FormatInt(123, 16)
fmt.Println("123对应的二进制数是 ", str5)
fmt.Println("123对应的八进制数是 ", str6)
fmt.Println("123对应的十六进制数是 ", str7)
//8.查找子串是否在指定的字符串中: strings.Contains("seafood", "foo")
b := strings.Contains("seafood", "foo") //b返回布尔值
fmt.Println(b)
//9.统计一个字符串中有几个指定的子串: strings.Count("ceheese", "e")
num := strings.Count("ceheese", "e") //num返回e的个数
fmt.Println(num)
//10.不区分大小写的字符串比较(==是区分字母大小写的): fmt.Println(string.EqualFold("abc", "Abc"))
fmt.Println(strings.EqualFold("abc", "Abc")) //返回布尔值
fmt.Println("abc" == "ABC") //区分大小写的字符串比较,返回布尔值
//11.返回子串在字符串第一次出现的index值,如果没有返回-1: strings.Index("NLT_abc", "abc")
str8 := strings.Index("NLT_abc", "abc") //返回首次出现的位置
str9 := strings.Index("NLT_abc", "A")
fmt.Println(str8)
fmt.Println(str9)
//12.返回子串在字符串第一次出现的index值,如果没有返回-1: strings.LastIndex("NLT_abc_S", "S")
str10 := strings.Index("NLT_abc_S", "T") //返回首次出现的位置
str11 := strings.Index("NLT_abc_S", "S")
fmt.Println(str10)
fmt.Println(str11)
//13.将指定的几个子串替换成另一个子串:strings.Replace("go go hello", "go", "go语言", n)
//n可以指定你希望替换几个,如果n=-1表示全部替换
str12 := strings.Replace("go go hello", "go", "go 语言", 2)
fmt.Println(str12)
//14.按照指定的某个字符,为分割标识,将一个字符串拆分成字符串数组:strings.Split("hello,world,lady", ",")
str13 := strings.Split("hello,world,lady", ",")
fmt.Println(str13)
//15.字符串的字母进行大小写的转换:strings.ToLower()
//strings.ToUpper()
str14 := strings.ToLower("HeLlO, wOrLd")
str15 := strings.ToUpper("StAr, GaZeR")
fmt.Println(str14, str15)
//16.将字符串左右两边的空格去掉:strings.TrimSpace("")
str16 := strings.TrimSpace(" abc ")
fmt.Println(str16)
//17.将字符串左右两边指定的字符去掉:strings.Trim(),可同时去掉几种不同的字符
str17 := strings.Trim("!def!", "!")
fmt.Println(str17)
//18.将字符串左边的指定字符去掉:strings.TrimLeft()
//将字符串右边的指定字符去掉:strings.TrimRight()
str18 := strings.TrimLeft("!!!!ghi", "!")
str19 := strings.TrimRight("jkl~~~", "~")
fmt.Println(str18, str19)
//19.判断字符串是否以指定的字符串开头/结束 strings.HasPrefix()/strings.HasSuffix()
fmt.Println(strings.HasPrefix("star gazer", "s")) //true
fmt.Println(strings.HasSuffix("star gazer", "r")) //true
}