Go语言操作字符串

1、截取字符串

Go语言中字符串的本质是数组,是一种值类型且值不可变。可以使用len()函数获取字符串的字节长度,使用切片截取字符串。

	var s = "Go is an efficient, interesting, and easy to learn and use language."
	len1 := len(s)
	s1 := s[0:7]

	// s1 = Go is a, length = 68
	fmt.Printf("s1 = %s, length = %d\n", s1, len1)

对于中文字符串,由于一个中文不只由一个字节组成,所以直接使用切片可能会将中文的编码截断,结果就是最后一个字乱码。故针对中文字符串的截取,可以先将中文字符串转换为[]rune类型再截取,最后再将[]rune类型通过string()函数转换为字符串类型。

	var str = "go是一门高效、有趣且易学易用的语言。"
	len2 := len(str)
	s2 := str[0:7]

	// s2 = go是��, length = 53
	fmt.Printf("s2 = %s, length = %d\n", s2, len2)

	r := []rune(str)
	s3 := string(r[0:7])

	// s3 = go是一门高效
	fmt.Printf("s3 = %s\n", s3)

如果要获取中文字符串的字符串长度,可采用如下的方式:

	var str = "go是一门高效、有趣且易学易用的语言。"
	len3 := utf8.RuneCountInString(str)

	// 19
	fmt.Println(len3)

2、字符串反转

将字符串先转换为[]rune类型,利用平行赋值的方式反转,再将[]rune类型转换为字符串类型。

import "fmt"

func main() {
	s := "123456789"
	res := reverseString(s)

	// 987654321
	fmt.Println(res)

	s1 := "Go语言非常有趣"
	res1 := reverseString(s1)
	
	// 趣有常非言语oG
	fmt.Println(res1)
}

func reverseString(s string) string {
	r := []rune(s)
	l := len(r)

	for i := 0; i < l/2; i++ {
		r[i], r[l-i-1] = r[l-i-1], r[i]
	}

	return string(r)
}

3、多个分隔符分割字符串

Go语言内置包strings提供了一个FieldsFunc()函数用于用指定函数分割字符串。

func main() {
	fn := func(c rune) bool {
		return strings.ContainsRune("/;", c)
	}
	str := "Go;Python;C/C++;Java"
	res := strings.FieldsFunc(str, fn)
	fmt.Println(res)
}

// [Go Python C C++ Java]

4、Go语言内置包strings

Go语言内置包strings提供了很多字符串操作的相关函数。可在命令行执行go doc strings或参阅官网文档:https://pkg.go.dev/strings

全部评论

相关推荐

尊尼获获:闺蜜在哪?
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务