package main
func main() {
a := "hello 世界"
fmt.Printf("%#v (%d)\n", a, len(a))
// "hello 世界" (12)
// 按 rune ForRange 循环
for k, v := range a {
fmt.Printf("%#4v. %#6v (%T)\n", k, v, v)
}
// 按 byte 索引取值
fmt.Printf("a[0]: %#6v (%T)\n", a[0], a[0])
fmt.Printf("a[6]: %#6v (%T)\n", a[6], a[6])
// 0. 104 (int32)
// 1. 101 (int32)
// 2. 108 (int32)
// 3. 108 (int32)
// 4. 111 (int32)
// 5. 32 (int32)
// 6. 19990 (int32)
// 9. 30028 (int32)
// a[0]: 0x68 (uint8)
// a[6]: 0xe4 (uint8)
b := []byte(a)
fmt.Printf("%#v\n", b)
// []byte{0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0xe4, 0xb8, 0x96, 0xe7, 0x95, 0x8c}
c := []rune(a)
fmt.Printf("%#v\n", c)
// []int32{104, 101, 108, 108, 111, 32, 19990, 30028}
}
len(s)
strings.Join(s1, s2) string
strings.ContainsRune(s, rune) bool
strings.Contains(s, substr) bool
注意:任何字符串都包含空字符串strings.Index(s, substr) int
strings.Count(s, substr) int
注意:任何字符串包含 n + 1 个空字符串strings.HasPrefix(s, substr) bool
strings.HasSuffix(s, substr) bool
strings.Compare(s1, s2)
大于 1 / 小于 -1 / 等于 0strings.Repeat(s, num) string
strings.Replace(s, substr, replacement, num) string
strings.EqualFold(s1, s2) bool
忽略大小写等于判断strings.Fields(s)
用空白字符(空格、换行、tab)将字符串切割成字串
参考 Golang strings
包。
字符串连接:
+
,+=
fmt.Sprintf
strings.Join
-
bytes.Buffer
var b bytes.Buffer b.WriteString("hello") b.WriteString(" world") fmt.Println(b.String())
-
strings.Builder
var sb strings.Builder sb.WriteString("hello") sb.WriteString(" world") fmt.Println(sb.String())