判断字符串长度
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)
}
格式化输出
func main(){
name := "jay"
age := 28
address := "中国"
fmt.Printf("名字%s, 年龄%d, 国籍%s", name, age, address)
}
缺省格式和类型
整型(缩进, 进制类型, 正负符号)
字符(有引号, Unicode)
Value: 65 (Unicode letter A)
浮点(缩进, 精度, 科学计数)
Value: 123.456
字符串or 字节slice (引号, 缩进, 16进制)
Value: "cafe"
高性能字符串拼接
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可以进行查看有哪些方法
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#@", "#@"))
}