Go基础知识入门 - 字符串的基本操作

72 阅读1分钟

判断字符串长度

func main(){
   
   // 英文可以直接使用len 中文要进行处理成rune切片
   name := "这是一个字符串"
   name1 := "hello word"
   bytes := []rune(name)
   
   // 10 21 7
   fmt.Println( len(name1), len(name), len(bytes))

}

转义符

func main(){

       // 转义符 两种形式 ` 和转义符
   name1 := "\r\n这是一个"字符串""
   name := `这是一个字符串`

   fmt.Println(name, name1)

}

image.png

格式化输出

func main(){

   name := "jay"
   age := 28
   address := "中国"

   fmt.Printf("名字%s, 年龄%d, 国籍%s", name, age, address)

}

缺省格式和类型

image.png

整型(缩进, 进制类型, 正负符号)

image.png

字符(有引号, Unicode)

Value: 65   (Unicode letter A)

image.png

浮点(缩进, 精度, 科学计数)

Value: 123.456

image.png

字符串or 字节slice (引号, 缩进, 16进制)

Value: "cafe"

image.png

高性能字符串拼接

func main(){

   // 高性能
   name := "jay"
   age := 28
   address := "中国"

   var builder strings.Builder
   builder.WriteString("姓名:")
   builder.WriteString(name)
   builder.WriteString(",年龄:")
   builder.WriteString(strconv.Itoa(age))
   builder.WriteString(",国籍:")
   builder.WriteString(address)

   re := builder.String()

   fmt.Println(re)
}

使用builder拼接性能远高于前面的方法

字符串比较

func main(){
   // 字符串的比较
   a := "a"
   b := "b"
   fmt.Println(a!=b, a>b)
}

字符串操作的常用方法

字符串操作的方法很多,我们很难记住所有的,但是能直接看源码,随便点击进入一个方法,在按command + o可以进行查看有哪些方法

image.png

func main(){

   a := "hello world"

   // 是否包含
   fmt.Println(strings.Contains(a, "hello"))

   // 出现次数
   fmt.Println(strings.Count(a, "l"))

   // 分割字符串
   fmt.Println(strings.Split(a, "o"))

   // 是否包含前缀
   fmt.Println(strings.HasPrefix(a, "h"))

   // 是否包含后缀
   fmt.Println(strings.HasSuffix(a, "d"))

   // 查询子串出现的位置
   fmt.Println(strings.Index(a, "d"))

   // 字符串替换
   fmt.Println(strings.Replace(a, "world", "golang", 1))

   // 大小写转换
   fmt.Println(strings.ToLower("GO"))
   fmt.Println(strings.ToUpper("go"))

   // 去掉特殊字符 首尾
   fmt.Println(strings.Trim("#hello world#@", "#@"))


}