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
|
func strSplit() {
s := "Hello, 世界! Hello!"
// Split
ss := strings.Split(s, " ")
fmt.Printf("%q\n", ss) // ["Hello," "世界!" "Hello!"]
ss = strings.Split(s, ", ")
fmt.Printf("%q\n", ss) // ["Hello" "世界! Hello!"]
ss = strings.Split(s, "")
fmt.Printf("%q\n", ss) // 单个字符列表
// SplitAfter
ss = strings.SplitAfter(s, " ")
fmt.Printf("%q\n", ss) // ["Hello, " "世界! " "Hello!"]
ss = strings.SplitAfter(s, ", ")
fmt.Printf("%q\n", ss) // ["Hello, " "世界! Hello!"]
ss = strings.SplitAfter(s, "")
fmt.Printf("%q\n", ss) // 单个字符列表
// SplitN
ss = strings.SplitN(s, " ", 2)
fmt.Printf("%q\n", ss) // ["Hello," "世界! Hello!"]
ss = strings.SplitN(s, " ", -1)
fmt.Printf("%q\n", ss) // ["Hello," "世界!" "Hello!"]
ss = strings.SplitN(s, "", 3)
fmt.Printf("%q\n", ss) // ["H" "e" "llo, 世界! Hello!"]
// SplitAfterN
ss = strings.SplitAfterN(s, " ", 2)
fmt.Printf("%q\n", ss) // ["Hello, " "世界! Hello!"]
ss = strings.SplitAfterN(s, " ", -1)
fmt.Printf("%q\n", ss) // ["Hello, " "世界! " "Hello!"]
ss = strings.SplitAfterN(s, "", 3)
fmt.Printf("%q\n", ss) // ["H" "e" "llo, 世界! Hello!"]
// Fields 以连续的空白字符为分隔符,将 s 切分成多个子串,结果中不包含空白字符本身
// 空白字符有:\t, \n, \v, \f, \r, ' ', U+0085 (NEL), U+00A0 (NBSP)
// 如果 s 中只包含空白字符,则返回一个空列表
ss := strings.Fields(s)
fmt.Printf("%q\n", ss) // ["Hello," "世界!" "Hello!"]
// FieldsFunc 以一个或多个满足 f(rune) 的字符为分隔符,
// 将 s 切分成多个子串,结果中不包含分隔符本身。
// 如果 s 中没有满足 f(rune) 的字符,则返回一个空列表。
func isSlash(r rune) bool {
return r == '\\' || r == '/'
}
s = "C:\\Windows\\System32\\FileName"
ss = strings.FieldsFunc(s, isSlash)
fmt.Printf("%q\n", ss) // ["C:" "Windows" "System32" "FileName"]
}
|