Go strings 系统包的使用说明
前文我们有学习了 string 变量,发现 Go 语言并没有向面向对象语言那样,类型中自带方法来处理对象的值。Go语言中也有类似的操作,其操作全都在 strings 系统包中实现了。本文主要来讲解一下如何使用 strings 系统包比较常用的字符串操作。
1. 获取字符串长度
在往数据库中写入数据的时候,数据库字段通常都会有长度限制,所以在写入之前最好事先判断一下字符串的长度是否符合自己的设计。
代码示例:
package main
import (
"fmt"
"strings"
)
func main() {
str := "Hello Codey!"
fmt.Println(len(str))
fmt.Println(strings.Count(str, "")-1)
}
执行结果:
其实获取字符串长度常用的是用 len()
函数去获取,因为 sring 的本质是一个 rune 切片,所以 len()
对 string 也是可以直接使用的。如果想要通过 strings 包来获取长度,我们可以通过 strings.Count(str,s string)int
来迂回达到目的,寻找字符串中的空字符串的个数就相当于寻找字符之间的空隙(包括字符首尾),所以得到的数字就是长度+1,我们得到结果后再减去1,就可以得到字符串的长度了。
2. 比较字符串
在开发大小写不敏感的应用场景时,比如说地名的英文缩写。一般情况我们都将字符串转换为大写或者小写再进行比较。Go 语言中的 strings 包中专门提供了一个大小写不敏感的比较函数——strings.EqualFold(str1,str2 string)bool
。
代码示例:
package main
import (
"fmt"
"strings"
)
func main() {
str1 := "Hello Codey!"
str2 := "heLLo coDEy!"
fmt.Println(strings.EqualFold(str1, str2))
}
执行结果:
3. 字符串分割
Go 语言中也是可以支持根据特定字符串将字符串分割为字符串数组的操作。通过使用 strings.Split(s, sep string) []string
来实现
代码示例:
package main
import (
"fmt"
"strings"
)
func main() {
str := "Hello Codey!"
fmt.Println(strings.Split(str, " "))//使用空格字符串去分割str
}
执行结果:
4. 前后缀的判断
在执行文件操作的时候,经常会用到的前后缀的操作,比如获取日志文件的时候,获取 .log 结尾,同时还要以2020 5 开头的文件,就需要判断前后缀是否含有这些字符串,Go 语言的前缀判断是使用 strings.HasPrefix(s, prefix string``)bool
,而后缀是使用 strings.HasSuffix(s, prefix string``)bool
。
代码示例:
package main
import (
"fmt"
"strings"
)
func main() {
str := "2020_5_20.log"
fmt.Println(strings.HasPrefix(str, "2020_5_"))
fmt.Println(strings.HasSuffix(str, ".log"))
}
执行结果:
5. 去除前后空格
在处理前端输入的数据的时候,有时会需要去除前后空格。Go 语言中使用 strings.TrimSpace(s string)string
来执行这个操作。
代码示例:
package main
import (
"fmt"
"strings"
)
func main() {
str := " Hello Codey! "
fmt.Println(strings.TrimSpace(str))
}
执行结果:
6. 将字符串数组拼接为字符串
Go 语言中使用 strings.Join(a ``[]string, ``sep string) string
来将字符串数组,根据你想要的字符串进行拼接成为一个字符串。
代码示例:
package main
import (
"fmt"
"strings"
)
func main() {
str := []string{"Hello", "Hi"}
fmt.Println(strings.Join(str, ","))//使用逗号拼接字符串
}
执行结果:
7. 字符串替换
Go 语言中使用 strings.Replace(s, old, new string, n int) string
来进行字符串替换,n<0 时替换字符串中左右旧字符子串。
package main
import (
"fmt"
"strings"
)
func main() {
str := "Hello Codey!"
fmt.Println(strings.Replace(str, "Hello", "Hi", -1))//将str中所有Hello替换为Hi
}
执行结果:
8. 小结
本文主要介绍了 Go 语言的一个字符串操作包,这个包里面还有很多其它对字符串的操作,有兴趣的读者可以继续研究。本文介绍的主要就是些开发中常用的字符串操作,在我的开发经历中还是字符串的分割和替换用的最多,大家要注意的是 Go 语言中的字符串是变量,并不是对象,每次修改完字符串其实都会使用一个新的内存,所以在内存不充足的场景要慎用字符串操作。