1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
package main

import (
"fmt"
"strconv"
"strings"
)

func main() {
// 1. HasPrefix(s string, prefix string) bool
// 判断字符串 s 是否以 prefix 开头
var s = "suwei ksdfj ddv kgjkl lskdfjl susu"
fmt.Println("1. 前缀为suwei", strings.HasPrefix(s, "suwei"))

// 2. HasSuffix(s string, suffix string) bool
// 判断字符串 s 是否以 suffix 结尾
fmt.Println("2. 后缀为susu", strings.HasSuffix(s, "susu"))

// 3. Index(s string, str string) int
// 返回字符串 str 在字符串 s 中首次出现的位置,不存在则返回 -1
fmt.Println("3. ddv首次出现的索引:", strings.Index(s, "ddv"))

// 4. LastIndex(s string, str string) int
// 返回字符串 str 在字符串 s 中最后一次出现的位置,不存在则返回 -1
fmt.Println("4. 最后一个su的索引:", strings.LastIndex(s, "su"))

// 5. Count(s string, str string)
// 统计字符串 s 中 str 出现的次数
// 若 str 为空字符串,则返回字符串 s 的长度 + 1(多少个字符 + 1)
fmt.Println("5. The number of \"中文\" length is:", strings.Count("中文", "")-1)
fmt.Println("5. 字符串 s 中有多少个 su:", strings.Count(s, "su"))

// 6. Contains(s, substr string) bool
// 判断字符串 s 是否包含字符串 substr
fmt.Println("6. \"suwei yingjie\" 包含 \"suwei\":", strings.Contains("suwei yingjie", "suwei"))

// 7. ContainsAny(s, chars string) bool
// 判断字符串 s 是否包含字符串 chars 中的任意字符(有一个即为 true)
fmt.Println("7.", strings.ContainsAny("suwei ksfdlj", "ms")) // true

// 8. Replace(s string, old string, new string, n int) string
// 将字符串 s 中 old 字符串替换为 new 字符串,替换 n 次,
// 返回替换后的字符串,原字符串不受影响。
newS := strings.Replace(s, "su", "苏", 2)
fmt.Println("8. 替换后的s:", newS)

// 9. ReplaceAll(s string, old string, new string) string
// 将字符串 s 中 old 字符串全部替换为 new 字符串
newS = strings.ReplaceAll(s, "su", "苏")
fmt.Println("9. 全部替换后的s:", newS)

// 10. Repeat(s string, count int) string
// 重复 count 次 字符串s
fmt.Println("10. 重复\"su\" 6次:", strings.Repeat("su", 6))

// 11. ToLower(s string) string
// 将字符串 s 转为小写
fmt.Println("11. \"Suwei IS A GIrl.\" tolower is:", strings.ToLower("Suwei IS A GIrl."))

// 12. ToUpper(s string) string
// 将字符串 s 转为大写
fmt.Println("12. \"suwei is a girl.\" toupper is:", strings.ToUpper("suwei is a girl."))

// 13. TrimSpace(s string) string
// 去掉字符串 s 首尾的空格
fmt.Println("13.", strings.TrimSpace(" suwei deng ddv "))

// 14. Trim(s string, cutset string) string
// 去掉字符串 s 首尾的 cutset 字符串中的字符
// 下面这个例子会去除首尾连续的所有 's'、'u' 字符
fmt.Println("14.", strings.Trim("susuuuuswei jkdslf su susu yingjie dddv susu", "su"))

// 15. TrimLeft(s string, cutset string) string
// 去掉字符串 s 首部的 cutset 字符串中的字符
fmt.Println("15.", strings.TrimLeft("susuuuuswei jkdslf su susu yingjie dddv susu", "su"))

// 16. TrimRight(s string, cutset string) string
// 去掉字符串 s 尾部的 cutset 字符串中的字符
fmt.Println("16.", strings.TrimRight("susuuuuswei jkdslf su susu yingjie dddv susu", "su"))

// 17. TrimPrefix(s, prefix string) string
// 去掉字符串 s 的前缀 prefix
fmt.Println("17. \"suswei ddvhjlk susu\"去掉头部\"su\":", strings.TrimPrefix("suswei ddvhjlk susu", "su"))

// 18. TrimSuffix(s, suffix string) string
// 去掉字符串 s 的前缀 suffix
fmt.Println("18. \"suwei ddvhjlk sussu\"去掉尾部\"su\":", strings.TrimSuffix("suswei ddvhjlk sussu", "su"))

// 19. Field(s string) []string
// 返回以空格分隔字符串 s 的 []string
// ** 首尾的空格会被忽略 **
fmt.Println("19.", strings.Fields(" suwei ddv yingjieDeng "))

// 20. Split(s string, sep string) []string
// 返回以字符串 sep 分隔的 []string
// ** 首尾的分隔符也会被进行分隔(首尾会多出一个空字符串 "")
// 如 strings.Split("&suwei&ddv&yingjieDeng&", "&") == ["", "suwei", "ddv", "yingjieDeng", ""]
fmt.Println("20.", strings.Split("suwei&ddv&yingjieDeng", "&"))

// 21. Join(s1 []string, sep string) string
// 使用 sep 将 s1 连接起来
fmt.Println("21.", strings.Join([]string{"su", "yingjie", "ddv", "deng"}, "-"))

// 22. Map(mapping func(rune) rune, s string) string
// 接收一个函数,对字符串 s 的每个字符进行处理并返回
// ** 如果返回一个负值,这个字符将会被丢弃
maps := strings.Map(func(r rune) rune {
if r == 'd' {
return -1
}
return r + 1
}, "suwei ddv yingjie")
fmt.Println("22. \"suwei ddv yingjie\"每个字符的下一个字符(移除dd):", maps)

// 23. strconv.Itoa(i int) string
// 将一个整数转换为字符串
fmt.Printf("23. type: %T, value: %v\n", strconv.Itoa(3456), strconv.Itoa(3456))

// 24. strconv.Atoi(s string) (int, err)
// 将字符串转换为整数
i, err := strconv.Atoi("345")
if err != nil {
fmt.Println("err:", err)
} else {
fmt.Printf("24. type i: %T, value i: %v\n", i, i)
}
}

// 结果
1. 前缀为suwei true
2. 后缀为susu true
3. ddv首次出现的索引: 12
4. 最后一个su的索引: 32
5. The number of "中文" length is: 2
5. 字符串 s 中有多少个 su: 3
6. "suwei yingjie" 包含 "suwei": true
7. true
8. 替换后的s: 苏wei ksdfj ddv kgjkl lskdfjl 苏su
9. 全部替换后的s: 苏wei ksdfj ddv kgjkl lskdfjl 苏苏
10. 重复"su" 6次: susususususu
11. "Suwei IS A GIrl." tolower is: suwei is a girl.
12. "suwei is a girl." toupper is: SUWEI IS A GIRL.
13. suwei deng ddv
14. wei jkdslf su susu yingjie dddv
15. wei jkdslf su susu yingjie dddv susu
16. susuuuuswei jkdslf su susu yingjie dddv
17. "suswei ddvhjlk susu"去掉头部"su": swei ddvhjlk susu
18. "suwei ddvhjlk sussu"去掉尾部"su": suswei ddvhjlk sus
19. [suwei ddv yingjieDeng]
20. [suwei ddv yingjieDeng]
21. su-yingjie-ddv-deng
22. "suwei ddv yingjie"每个字符的下一个字符(移除dd): tvxfj!w!zjohkjf
23. type: string, value: 3456
24. type i: int, value i: 34