Golang 如何分割字符串
在 Go 语言中,字符串不同于其他语言,如 Java、C++、Python 等。它是一个由可变宽字符序列组成的字符串,每个字符都使用 UTF-8 编码的一个或多个字节表示。在 Go 字符串中,您可以使用以下函数将字符串拆分为一个切片。这些函数在 strings 包中定义,因此必须在程序中导入 strings 包以访问这些函数:
1. Split: 该函数将字符串拆分为由给定分隔符分隔的所有子字符串,并返回包含这些子字符串的切片。
语法:
func Split(str, sep string) []string
这里, str 是字符串,sep 是分隔符。如果 str 不包含给定的 sep ,并且 sep 不为空,则它将返回一个长度为 1 的仅包含 str 的切片。或者如果 sep 为空,则它将在每个 UTF-8 序列后拆分。或者如果 str 和 sep 都为空,则它将返回一个空切片。
示例:
// Go 程序示例:如何拆分字符串
package main
import (
"fmt"
"strings"
)
// 主函数
func main() {
// 创建和初始化字符串
str1 := "Welcome, to the, online portal, of GeeksforGeeks"
str2 := "My dog name is Dollar"
str3 := "I like to play Ludo"
// 显示字符串
fmt.Println("String 1: ", str1)
fmt.Println("String 2: ", str2)
fmt.Println("String 3: ", str3)
// 拆分给定字符串
// 使用 Split() 函数
res1 := strings.Split(str1, ",")
res2 := strings.Split(str2, "")
res3 := strings.Split(str3, "!")
res4 := strings.Split("", "GeeksforGeeks, geeks")
// 显示结果
fmt.Println("\nResult 1: ", res1)
fmt.Println("Result 2: ", res2)
fmt.Println("Result 3: ", res3)
fmt.Println("Result 4: ", res4)
}
输出:
String 1: Welcome, to the, online portal, of GeeksforGeeks
String 2: My dog name is Dollar
String 3: I like to play Ludo
Result 1: [Welcome to the online portal of GeeksforGeeks]
Result 2: [M y d o g n a m e i s D o l l a r]
Result 3: [I like to play Ludo]
Result 4: []
2. SplitAfter: 该函数将字符串拆分为在给定分隔符的每个实例之后的所有子字符串,并返回包含这些子字符串的切片。
语法:
func SplitAfter(str, sep string) []string
这里, str 是字符串,sep 是分隔符。如果 str 不包含给定的 sep ,并且 sep 不为空,则它将返回一个长度为 1 的仅包含 str 的切片。或者如果 sep 为空,则它将在每个 UTF-8 序列后拆分。或者如果 str 和 sep 都为空,则它将返回一个空切片。
示例:
// 演示如何在Go程序中拆分字符串
package main
import (
"fmt"
"strings"
)
// 主函数
func main() {
// 创建并初始化字符串
str1 := "欢迎来到GeeksforGeeks在线门户"
str2 := "我的狗的名字是Dollar"
str3 := "我喜欢玩鲁多游戏"
// 显示字符串
fmt.Println("字符串1: ", str1)
fmt.Println("字符串2: ", str2)
fmt.Println("字符串3: ", str3)
// 拆分给定字符串
// 使用SplitAfter()函数
res1 := strings.SplitAfter(str1, ",")
res2 := strings.SplitAfter(str2, "")
res3 := strings.SplitAfter(str3, "!")
res4 := strings.SplitAfter("", "GeeksforGeeks, geeks")
// 显示结果
fmt.Println("\n结果1: ", res1)
fmt.Println("结果2: ", res2)
fmt.Println("结果3: ", res3)
fmt.Println("结果4: ", res4)
}
输出:
字符串1: 欢迎来到GeeksforGeeks在线门户
字符串2: 我的狗的名字是Dollar
字符串3: 我喜欢玩鲁多游戏
结果1: [欢迎来到, GeeksforGeeks在线门户]
结果2: [我的狗的名字是Dollar]
结果3: [我喜欢玩鲁多游戏]
结果4: []
3. SplitAfterN:
该函数将字符串拆分为基于给定分隔符的所有子字符串,并返回包含这些子字符串的切片。
语法:
func SplitAfterN(str, sep string, m int) []string
在这里, str 是字符串, sep 是分隔符,而 m 则用于查找要返回的子字符串的数量。如果 m>0 ,则它最多返回 m 个子字符串,最后一个子字符串不会拆分。如果 m == 0 ,则返回nil。如果 m <0 ** ,则返回所有子字符串。
**示例:
// 演示如何在Go程序中拆分字符串
package main
import (
"fmt"
"strings"
)
// 主函数
func main() {
// 创建并初始化字符串
str1 := "欢迎来到GeeksforGeeks在线门户"
str2 := "我的狗的名字是Dollar"
str3 := "我喜欢玩鲁多游戏"
// 显示字符串
fmt.Println("字符串1: ", str1)
fmt.Println("字符串2: ", str2)
fmt.Println("字符串3: ", str3)
// 拆分给定字符串
// 使用SplitAfterN()函数
res1 := strings.SplitAfterN(str1, ",", 2)
res2 := strings.SplitAfterN(str2, "", 4)
res3 := strings.SplitAfterN(str3, "!", 1)
res4 := strings.SplitAfterN("", "GeeksforGeeks, geeks", 3)
// 显示结果
fmt.Println("\n结果1: ", res1)
fmt.Println("结果2: ", res2)
fmt.Println("结果3: ", res3)
fmt.Println("结果4: ", res4)
}
输出:
字符串1: 欢迎来到GeeksforGeeks在线门户
字符串2: 我的狗的名字是Dollar
字符串3: 我喜欢玩鲁多游戏
结果1: [欢迎来到, GeeksforGeeks在线门户]
结果2: [我的狗的名字是D, o, l, l, a, r]
结果3: [我喜欢玩鲁多游戏]
结果4: []