Go strings.Split函数

12 篇文章 4 订阅

目录

描述

语法

参数

返回值

使用示例

注意事项

1. 当分隔符不存在于原字符串中时

2. 当分隔符是空字符串时

3. 参数都为空字符串

4. 当s为空字符串,sep不为空字符串时


描述

strings.Split函数用于将指定的分隔符切割字符串,并返回切割后的字符串切片。

语法

需要导入 strings包

strings.Split(s, sep)

参数

参数说明备注
s待分割的字符串字符串类型的参数
sep分隔符

字符串类型的参数

返回值

返回一个字符串切片。

使用示例

Split()函数将字符串根据分隔符切割。切割后返回一个字符串切片,切片len和cap值等于原字符串中存在分隔符的数量 + 1(仅在s不是空字符串的情况下成立)。

package main

import (
	"fmt"
	"strings"
)

func main() {
	demo := "I&love&Go,&and&I&also&love&Python."
	string_slice := strings.Split(demo, "&")

	fmt.Println("result:",string_slice)
	fmt.Println("len:",len(string_slice))
	fmt.Println("cap:", cap(string_slice))
}

运行结果如下:

result: [I love Go, and I also love Python.]
len: 8
cap: 8

注意事项

1. 当分隔符不存在于原字符串中时

当分隔符在原字符串中不存在的情况下,Split()函数仅仅将原字符串转换成一个len和cap值都为1的字符串切片。

package main

import (
	"fmt"
	"strings"
)

func main() {
	demo := "I love Go, and I also love Python."
	string_slice := strings.Split(demo, "&")

	fmt.Println("result:",string_slice)
	fmt.Println("len:",len(string_slice))
	fmt.Println("cap:", cap(string_slice))
}

运行结果如下:

result: [I love Go, and I also love Python.]
len: 1
cap: 1

2. 当分隔符是空字符串时

当分隔符是空字符串时,Split()函数将字符串中的每一个字符分割成一个单独的元素。

package main

import (
	"fmt"
	"strings"
)

func main() {
	demo := "Go"
	string_slice := strings.Split(demo, "")

	fmt.Println("result:",string_slice)
	fmt.Println("len:",len(string_slice))
	fmt.Println("cap:", cap(string_slice))
}

运行结果:

result: [G o]
len: 2
cap: 2

3. 参数都为空字符串

当Split()函数的两个参数都是空字符串时(即s和sep都是空字符串),Split()函数返回一个len和cap值都为0的空字符串切片。

package main

import (
	"fmt"
	"strings"
)

func main() {
	demo := ""
	string_slice := strings.Split(demo, "")

	fmt.Println("result:",string_slice)
	fmt.Println("len:",len(string_slice))
	fmt.Println("cap:", cap(string_slice))
}

运行结果:

result: []
len: 0
cap: 0

4. 当s为空字符串,sep不为空字符串时

不同于上一个场景,在这种情况下虽然得到的结果仍然是字符串切片,但是字符串切片的len和cap值是1(而不是像上一个场景中的值是0)。返回的结果是包含一个空字符串的字符串切片。

package main

import (
	"fmt"
	"strings"
)

func main() {
	demo := ""
	string_slice := strings.Split(demo, "*")

	fmt.Println("result:",string_slice)
	fmt.Println("len:",len(string_slice))
	fmt.Println("cap:", cap(string_slice))

	element := string_slice[0]
	fmt.Printf("string_slice[0]:%s, type:%T, len():%d\n",
		element, element, len(element),)

	fmt.Println("element == \"\"?", element == "")
}

运行结果:

result: []
len: 1
cap: 1
string_slice[0]:, type:string, len():0
element == ""? true

5. 返回的字符串切片中不再包含分隔符

  • 15
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Go 语言中,`strings` 包提供了 `Split` 函数用于将字符串按照指定的分隔符分割成多个子字符串,并返回一个字符串切片(`[]string`)。以下是 `Split` 函数的详细用法: ```go func Split(s, sep string) []string ``` 其中 `s` 代表需要分割的字符串,`sep` 代表分隔符。例如,如果想按照逗号 `,` 分割字符串,可以使用以下代码: ```go str := "apple,banana,orange" arr := strings.Split(str, ",") ``` 此时 `arr` 切片中的元素为 `["apple", "banana", "orange"]`。 如果想按照多个分隔符分割字符串,可以使用 `FieldsFunc` 函数,需要传入一个函数类型的参数,这个函数用于判断某个字符是否为分隔符。例如,如果想按照逗号 `,` 或空格分割字符串,可以使用以下代码: ```go str := "apple,banana orange" arr := strings.FieldsFunc(str, func(c rune) bool { return c == ',' || c == ' ' }) ``` 此时 `arr` 切片中的元素为 `["apple", "banana", "orange"]`。 如果要限制分割出来的子字符串数量,可以使用 `SplitN` 函数,需要传入一个 `n` 参数,代表最多分割出多少个子字符串。例如,如果想最多分割出两个子字符串,可以使用以下代码: ```go str := "apple,banana,orange" arr := strings.SplitN(str, ",", 2) ``` 此时 `arr` 切片中的元素为 `["apple", "banana,orange"]`。 需要注意的是,如果分隔符是一个字符串而不是单个字符,可以使用 `SplitAfter` 和 `SplitAfterN` 函数,它们与 `Split` 和 `SplitN` 函数的区别在于返回的子字符串中包含分隔符。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值