package main
import (
"fmt"
"strings"
)
func main() {
s1 := "你好china"
s2 := "\"D:\\Go\\src\\p1\"" // 双斜杠有一个是转义
// 1. 字符串长度
fmt.Println(len(s1)) // 11 一个汉字 3 字节,一个小写字母 1 个字节
// 2. 转义
fmt.Println(s2) // "D:\Go\src\p1"
// 3. 多行字符串
s3 := `
静夜思
窗前明月光,疑是地上霜。
举头望明月,低头思故乡。
`
fmt.Println(s3)
// 4. 字符串相关操作
s4 := "hello"
s5 := "word"
s6 := "D:\\Go\\src\\p1"
// 拼接
fmt.Println(s4 + s5) // helloword
// 分割 返回列表
fmt.Println(strings.Split(s6, "\\")) // [D: Go src p1]
// 包含 布尔值
fmt.Println(strings.Contains(s4, "ll")) // true
// 前缀 布尔值
fmt.Println(strings.HasPrefix(s5, "wo")) // true
// 后缀 布尔值
fmt.Println(strings.HasSuffix(s6, "p2")) // false
// 字串位置
fmt.Println(strings.Index(s4, "l")) // 2
fmt.Println(strings.LastIndex(s4, "l")) // 3
fmt.Println(strings.Index(s4, "a")) // -1
// 连接
fmt.Println(strings.Join(strings.Split(s6, "\\"), "+")) // D:+Go+src+p1
// 字符串修改 字符串不能修改
s7 := []rune(s4) // rune 切片
s7[0] = 'H' // 单引号
fmt.Println(string(s7)) // Hello
}