1 字符串操作的常用函数
1、Contains
func Contains(s, substr string) bool
功能:字符串s中是否包含substr,返回bool值
2、Join
func Join(a []string, sep string) string
功能:字符串链接,把slice a通过sep链接起来
3、Index
func Index(s, sep string) int
功能:在字符串s中查找sep所在的位置,返回位置值,找不到返回-1
4、Repeat
func Repeat(s string, count int) string
功能:重复s字符串count次,最后返回重复的字符串
5、Replace
func Replace(s, old, new string, n int) string
功能:在s字符串中,把old字符串替换为new字符串,n表示替换的次数,小于0表示全部替换
6、Split
func Split(s, sep string) []string
功能:把s字符串按照sep分割,返回slice
7、Trim
func Trim(s string, cutset string) string
功能:在s字符串的头部和尾部去除cutset指定的字符串
8、Fields
func Fields(s string) []string
功能:去除s字符串的空格符,并且按照空格分割返回slice
2 代码实践
package main
import (
"fmt"
"strings"
)
func main(){
// 1. Contains
//"hellogo"中是否包含"hello", 包含返回true, 不包含返回false
fmt.Println(strings.Contains("hellogo", "hello"))
fmt.Println(strings.Contains("hellogo", "abc"))
// 2. Joins 组合
s := []string{"abc", "hello", "mike", "go"}
buf := strings.Join(s, "x")
fmt.Println("buf = ", buf)
// 3. Index, 查找子串的位置
fmt.Println(strings.Index("abcdhello", "hello"))
fmt.Println(strings.Index("abcdhello", "go")) //不包含子串返回-1
// 4. 重复多少次,这里重复3次
buf = strings.Repeat("go", 3)
fmt.Println("buf = ", buf) //"gogogo"
// 5. Replace
// 在s字符串中,把old字符串替换为new字符串,n表示替换的次数,小于0表示全部替换
fmt.Println(strings.Replace("oink oink oink", "k", "ky", 2))
fmt.Println(strings.Replace("oink oink oink", "oink", "moo", -1))
// 6. Split 以指定的分隔符拆分,返回切片
buf = "hello@abc@go@mike"
s2 := strings.Split(buf, "@")
fmt.Println("s2 = ", s2)
// 7. Trim去掉两头的字符
buf = strings.Trim(" are u ok? ", " ") //去掉头部尾部的空格
fmt.Printf("buf = #%s#\n", buf)
fmt.Printf("[%q]\n", strings.Trim(" !!! Achtung !!! ", "! ")) // 输出: ["Achtung"]
fmt.Printf("[%q]\n", strings.Trim(" !!! Achtung !!! ", " !")) // 同样输出: ["Achtung"]
// 说明Trim可以去掉头尾包含这空格、!的内容。
// 8. 去除s字符串的空格符,并且按照空格分割返回slice
s3 := strings.Fields(" are u ok? ")
//fmt.Println("s3 = ", s3)
for i, data := range s3 {
fmt.Println(i, ", ", data)
}
}
3 字符串的转换
package main
import (
"fmt"
"strconv"
)
func main(){
// 1. 转换为字符串后追加到字节数组
slice := make([]byte, 0, 1024)
fmt.Println("slice = ", slice)
slice = strconv.AppendBool(slice, true)
//第二个数为要追加的数,第3个为指定10进制方式追加
slice = strconv.AppendInt(slice, 1234, 10)
slice = strconv.AppendQuote(slice, "abcgohello")
fmt.Println("slice = ", string(slice)) //转换string后再打印
fmt.Println("=============================")
// 2. 其它类型转换为字符串
var str string
str = strconv.FormatBool(false)
fmt.Println("str = ", str)
//'f' 指打印格式,以小数方式, -1指小数点位数(紧缩模式), 64以float64处理
str = strconv.FormatFloat(3.14, 'f', -1, 64)
fmt.Println("str = ", str)
str = strconv.Itoa(6666)// 整型转字符串,常用
fmt.Println("str = ", str)
fmt.Println("=============================")
// 3. 字符串转其它类型
var flag bool
var err error
flag, err = strconv.ParseBool("true")
if err == nil {
fmt.Println("flag = ", flag)
} else {
fmt.Println("err = ", err)
}
a, _ := strconv.Atoi("567") // 把字符串转换为整型
fmt.Println("a = ", a)
}