📜  golang 切片字符串 (1)

📅  最后修改于: 2023-12-03 15:01:02.244000             🧑  作者: Mango

Golang 切片字符串

在 Golang 中处理字符串时,切片是一个非常有用的工具。它可以让我们方便地对字符串进行切割、连接、复制、删除等操作。本篇介绍如何使用切片对 Go 的字符串进行操作。

基本概念
字符串的本质

在 Golang 中,字符串是一个字节切片(byte slice)。因此,你可以像处理普通的切片一样来处理字符串,例如取子串、拼接等等。

字符串切片

字符串切片的写法和普通切片基本一样,只不过元素类型是 uint8,也就是 byte。你可以使用系统内置的 []byte 类型,也可以自己定义 []uint8

var str string = "hello, world!"
s := []byte(str)
s[0] = 'H'
fmt.Println(string(s))  // "Hello, world!"

为了方便起见,Golang 也提供了对字符串的直接切片语法:

str := "hello, world!"
s := str[0:5]
fmt.Println(s)  // "hello"

值得注意的是,字符串切片不会进行内存复制,因此对字符串的操作会对原始字符串产生影响。

切割字符串

使用 Golang 中的 strings 库中的 Split 方法可以快速地将字符串按照分隔符切割成为切片。例如:

str := "apple,banana,orange"
sli := strings.Split(str, ",")
fmt.Println(sli)  // ["apple", "banana", "orange"]
连接字符串

使用 strings.Join 可以将一个字符串切片连接起来。

words := []string{"hello", "world"}
str := strings.Join(words, " ")
fmt.Println(str)  // "hello world"
比较字符串

判断两个字符串是否相等可以使用 == 运算符,如:

str1 := "hello"
str2 := "world"
if str1 == str2 {
    fmt.Println("equal")
} else {
    fmt.Println("not equal")
}

如果你需要不分大小写比较字符串,你可以将两个字符串全部转换成大写或小写后再进行比较,例如:

str1 := "HeLlo"
str2 := "hElLo"
if strings.ToLower(str1) == strings.ToLower(str2) {
    fmt.Println("equal")
} else {
    fmt.Println("not equal")
}
获取字符串长度

使用 len() 可以获取一个字符串的长度;

str := "Hello, 世界"
fmt.Println(len(str))  // 13