二、字符串相关 字符串赋值 字符串的赋值,使用""
可以添加\n
,\t
这些字符,使用反引号将代表原生的字符。
1 2 3 4 5 6 7 8 9 package mainimport "fmt" func main () { myName := "我的名字是\nzhangsan" myName1 := `我的名字是\nzhangsan` fmt.Println(myName,myName1) }
运行结果:
1 2 我的名字是 zhangsan 我的名字是\nzhangsan
字符串的拼接 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 package mainimport ( "fmt" ) func main () { world := "我的名字是:" myName := "zhangsan" msg := "name" msg += "---zhangsan" fmt.Println(world + myName) fmt.Println(msg) fmt.Printf("我的名字是:%s" ,myName) }
函数:func Repeat(s string, count int) string 说明:将 count 个字符串 s 连接成一个新的字符串 示例:
1 2 s := "Good!" fmt.Println(strings.Repeat(s, 3 ))
函数:func Join(a []string, sep string) string 说明:Join 将 a 中的子串连接成一个单独的字符串,子串之间用 sep 分隔 示例:
1 2 s := []string {"foo" , "baa" , "bae" } fmt.Println(strings.Join(s, ", " ))
字符串索引、分割与切片 1 2 3 4 5 6 func main () { msg := "abcdefghi" fmt.Printf("%T %#v %c\n" ,msg[0 ],msg[0 ],msg[0 ]) fmt.Println(msg[1 :3 ]) fmt.Println(len (msg)) }
函数: Fields(s string) []string 说明: 将字符串 str以空格、tab、回车、换行、换页这些空白符为分隔符拆分成若干个字符串,若成功则返回分割后的字符串切片 示例:
1 2 3 4 5 6 7 8 9 10 str := "Hello World" for _, v := range strings.Fields(str) {fmt.Println(v) } fmt.Printf("%s" ,strings.Split("a-b-c" ,"-" )) fmt.Printf("%s" ,strings.SplitN("aa-aa-aa" ,"-" ,2 ))
字符串的遍历 1 2 3 4 5 6 7 8 9 10 11 12 13 14 func main () { msg := "abcdefghi" msg2 := "我热爱go语言" for i:= 0 ; i< len (msg); i++{ fmt.Printf("%c\n" ,msg[i]) } for _,v :=range msg2{ fmt.Printf("%q" ,v) } }
字符串类型转换 其他类型转成字符串类型 strconv.FormatXXX()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 func main () { slice := []byte ("hello" ) fmt.Println(slice) slice2 := []byte {'h' , 'e' , 'l' , 'l' , 'o' , 97 } fmt.Println(string (slice2)) str1 := strconv.FormatBool(true ) fmt.Println(str1) fmt.Println(strconv.FormatInt(123 , 10 )) fmt.Println(strconv.Itoa(123 )) fmt.Println(strconv.FormatFloat(3.14 , 'f' , 6 , 64 )) }
字符串类型转成其他类型 strconv.ParseXXX()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 func main () { b, err_info := strconv.ParseBool("false" ) if err_info != nil { fmt.Println("类型转换出错" ) } else { fmt.Println(b) } intVal := 65 float64Val := 2.2 stringVal := "4" v, err := strconv.Atoi(stringVal) fmt.Println(err, v) vv, err := strconv.ParseFloat("3.1415" ,64 ) fmt.Println(err,vv) }
字符串切片和字符切片互转 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 func main () { ascii := "abc我爱Go" fmt.Println([]byte (ascii)) fmt.Println([]rune (ascii)) fmt.Println(len ([]byte (ascii))) fmt.Println(len ([]rune (ascii))) fmt.Println(string ([]byte (ascii))) fmt.Println(string ([]rune (ascii))) }
其他数据类型转换 1 2 3 4 5 6 7 8 9 10 11 12 func main () { val, err_info := strconv.ParseInt("11011001" , 2 , 64 ) fmt.Println(val) intVal := 65 float64Val := 2.2 stringVal := "4" fmt.Println(strconv.FormatFloat(float64Val,'f' ,10 ,64 )) }
字符串的查找替换与判断(strings包) 函数:Contain(s,str string) bool 说明:查找子串是否在指定的字符串中 示例:
1 2 3 4 5 6 7 8 9 10 11 12 package mainimport ("fmt" "strings" ) func main () {fmt.Println(strings.Contains("TigerwolfC" , "wolf" )) fmt.Println(strings.Contains("TigerwolfC" , "bar" )) fmt.Println(strings.Contains("TigerwolfC" , "" )) fmt.Println(strings.Contains("" , "" )) fmt.Println(strings.Contains("我是中国人" , "我" )) }
函数: ContainsAny(s, chars string) bool 说明: 判断字符串 s 中是否包含 chars 中的任何一个字符,如果有返回 true,否则返回false 示例:
1 2 3 4 5 str := "Hello World" fmt.Println(strings.ContainsAny(str, "W" )) fmt.Println(strings.ContainsAny("foo" , "" )) fmt.Println(strings.ContainsAny(str, "def" )) fmt.Println(strings.ContainsAny("" , "" ))
函数: Count(s, sep string) int 说明: 判断字符 sep 在字符串 s 总共出现的次数,如果不存在返回0 示例:
1 2 3 4 5 6 str := "Hello World" fmt.Println(strings.Count(str, "e" )) str1 := "Hello Weed" fmt.Println(strings.Count(str1, "e" )) str2 := "Hello World" fmt.Println(strings.Count(str2, "p" ))
函数: EqualFold(s, t string) bool 说明: 判断字符串 s 是否与字符串 t 相等,并且不区分大小写 示例:
1 2 str := "Hello World" fmt.Println(strings.EqualFold(str, "hello world" ))
函数: HasPrefix(s, prefix string) bool 说明: 判断字符串 s 是否是以字符 prefix 开头,如果是返回 true 否则返回 false 示例:
1 2 str := "Hello World" fmt.Println(strings.HasPrefix(str, "He" ))
函数: HasSuffix(s, suffix string) bool 说明: 判断字符串 s 是否是以字符 suffix 结尾,如果是返回 true 否则返回 false 示例:
1 2 str := "Hello World" fmt.Println(strings.HasSuffix("str " , "orld" ))
函数: Index(s, sep string) int 说明: 判断字符 sep 在字符串 s 中第一次出现的位置,如果成功则返回sep位置的索引,如果字符 sep 不在字符串 s 中则返回 -1 示例:
1 2 3 str := "Hello World" fmt.Println(strings.Index(str, "e" )) fmt.Println(strings.Index(str, "c" ))
函数: func LastIndex(s, sep string) int 说明:返回子串 sep 在字符串 s 中最后一次出现的位置,如果找不到,则返回 -1,如果 sep 为空,则返回字符串的长度 示例:
1 2 3 4 str := "Hello World" fmt.Println(strings.LastIndex(str, "h" )) fmt.Println(strings.LastIndex(str, "o" )) fmt.Println(strings.LastIndex(str, "" ))
函数:func IndexAny(s, chars string) int 说明:返回字符串 chars 中的任何一个字符在字符串 s 中第一次出现的位置, 如果找不到,则返回 -1,如果 chars 为空,则返回 -1 示例:
1 2 3 4 str := "Hello World" fmt.Println(strings.IndexAny(str, "abc" )) fmt.Println(strings.IndexAny(str, "dof" )) fmt.Println(strings.IndexAny(str, "" ))
函数:func ToUpper(s string) string 说明:将 s 中的所有字符修改为其大写格式,对于非 ASCII 字符,它的大写格式需要查表转换 函数:func ToLower(s string) string 说明:将 s 中的所有字符修改为其小写格式,对于非 ASCII 字符,它的小写格式需要查表转换 函数:func ToTitle(s string) string 说明:ToTitle 将 s 中的所有字符修改为其 Title 格式,大部分字符的 Title 格式就是其 Upper 格式,只有少数字符的 Title 格式是特殊字符, 这里的 ToTitle 主要给 Title 函数调用
示例:
1 2 3 4 s := "heLLo worLd Abc" fmt.Println(us := strings.ToUpper(s)) fmt.Println(strings.ToLower(s)) fmt.Println(strings.ToTitle(s))
函数:func Trim(s string, cutset string) string 说明:将删除 s 首尾连续的包含在 cutset 中的字符 函数:func TrimLeft(s string, cutset string) string 说明:TrimLeft 将删除 s 头部连续的包含在 cutset 中的字符 函数:func TrimRight(s string, cutset string) string 说明:TrimRight 将删除 s 尾部连续的包含在 cutset 中的字符 示例:
1 2 3 4 5 6 7 8 9 10 s := " Hello 世界! " ts := strings.Trim(s, " Helo!" ) fmt.Printf("%q\n" , ts) fmt.Printf("[%q]" , strings.Trim(" !!! Achtung !!! " , "! " )) tr := strings.TrimLeft(s, " Helo" ) fmt.Printf("%q\n" , tr) tx := strings.TrimRight(s, " 世界!" ) fmt.Printf("%q\n" , tx)
函数:func TrimPrefix(s, prefix string) string 说明:TrimPrefix 删除 s 头部的 prefix 字符串,如果 s 不是以 prefix 开头,则返回原始 s 示例:
1 2 3 4 5 s := "@Hello@世界!" ts := strings.TrimPrefix(s, "@" ) fmt.Printf("%q\n" , ts) tx:= strings.TrimPrefix(s, "$" ) fmt.Printf("%q\n" , tx)
函数:func TrimSuffix(s, suffix string) string 说明:TrimSuffix 删除 s 尾部的 suffix 字符串,如果 s 不是以 suffix 结尾,则返回原始 s 示例:
1 2 3 s := "Hello 世界!!!!!" ts := strings.TrimSuffix(s, "!!!!" ) fmt.Printf("%q\n" , ts)
函数:func Replace(s, old, new string, n int) string 说明:Replace 返回 s 的副本,并将副本中的 old 字符串替换为 new 字符串替换次数为 n 次,如果 n 为 -1,则全部替换,如果 old 为空,则在副本的每个字符之间都插入一个 new 示例:
1 2 fmt.Println(strings.Replace("ABAACEDF" , "A" , "a" , 2 )) fmt.Println(strings.Replace("ABAACEDF" , "A" , "a" , -1 ))
trings.TrimSpace 剔除字符串中的空白字符
1 2 fmt.Println(strings.TrimSpace("\n\f\tabcdefg" ))
strings.Title 将字符串中单词首字符大写
1 2 fmt.Println(strings.Title("my name is xiao pu" ))