【go笔记】标准库-strings

简介: 【go笔记】标准库-strings

标准库-strings

前言

标准库strings用于处理utf-8编码的字符串。

字符串比较-Compare

func Compare(a,b string) int
  • 若 a==b ,则返回0;若 a <b ,则返回 -1;若 a>b ,则返回 1。
  • 字符串的比较方法是根据单个字符的ASCII编码。

示例代码:

package main
import (
  "fmt"
  "strings"
)
func main() {
  var str1 string = "hello"
  var str2 string = "world"
  fmt.Println(strings.Compare(str1,str2)) // -1
  fmt.Println(strings.Compare(str2,str1)) // 1
  fmt.Println(strings.Compare(str1,str1)) // 0
}

检测字符串是否包含子串-Contains

func Contains(s,substr string) bool

示例代码:

package main
import (
  "fmt"
  "strings"
)
func main() {
  fmt.Println(strings.Contains("hello world","hello")) // true
  fmt.Println(strings.Contains("hello world","hel123")) // false
}

大小写转换

函数原型:

func ToUpper(substr string) string
func ToLower(substr string) string
func ToTitle(substr string) string

示例代码:

package main
import (
  "fmt"
  "strings"
)
func main() {
  var str1 string = "heLLo, goLang"
  fmt.Println(strings.ToUpper(str1)) // HELLO, GOLANG
  fmt.Println(strings.ToLower(str1)) // hello, golang
  fmt.Println(strings.ToTitle(str1)) // HELLO, GOLANG
}

统计子字符串出现的次数

函数原型:

func Count(str,substr string) int

示例代码:

package main
import (
  "fmt"
  "strings"
)
func main() {
  var str1 string = "heLLo, goLang"
  var str2 string = "o"
  fmt.Println(strings.Count(str1,str2))
}

判断字符串的前后缀

函数原型:

func HasPrefix(str,substr string) bool
func HasSuffix(str,substr string) bool

示例代码:

package main
import (
  "fmt"
  "strings"
)
func main() {
  var str1 string = "heLLo, goLang"
  var str2 string = "o"
  var str3 string = "he"
  var str4 string = "Lang"
  fmt.Println(strings.HasPrefix(str1, str2)) // false
  fmt.Println(strings.HasPrefix(str1, str3)) // ture
  fmt.Println(strings.HasSuffix(str1, str4)) // ture
}

分割和连接

函数原型:

func Split(str,separator string) []string
func Join(strs []string) string

示例代码:

package main
import (
  "fmt"
  "strings"
)
func main() {
  var str1 string = "heLLo,goLang"
  fmt.Println(strings.Split(str1, ",")) // [heLLo goLang]
  for _,v := range strings.Split(str1, ",") {
    fmt.Println(v)
  }
  fmt.Println(strings.Join([]string{"Hello","Golang","World"}, "、")) // Hello、Golang、World
}

索引

这个操作能获取指定字符首次出现的位置,通常用来判断子字符串在对应字符串中的位置。

函数原型:

func Index(str,substr string) int

示例代码:

package main
import (
  "fmt"
  "strings"
)
func main() {
  var str1 string = "heLLo,goLang"
  fmt.Println(strings.Index(str1, "LL")) // 2
}

清洗

清洗操作可以将字符串两端的一些字符删掉,常用来删除字符串两端的空格。

函数原型:

func Trim(s, cutset string) string
func TrimLeft(s, cutset string) string
func TrimRight(s, cutset string) string
func TrimPrefix(s, prefix string) string
func TrimSuffix(s, suffix string) string
func TrimSpace(str string) string

示例代码:

package main
import (
  "fmt"
  "strings"
)
func main() {
  var str1 string = "  heLLo,goLang  "
  var str2 string = "123heLLo,goLang123"
  fmt.Println(strings.Trim(str1, " ")) // heLLo,goLang
  fmt.Println(strings.Trim(str2, "123")) // heLLo,goLang
  // 专门用来清除两端空格的函数
  fmt.Println(strings.TrimSpace(str1)) // heLLo,goLang
}

替换

清洗操作只能完成首尾的空格或者指定字符的替换,要完成更为复杂的操作则要调用NewReplacer()函数。

函数原型:

func Replace(s, old, new string, n int) string {}
func NewReplacer(oldnew ...string) *Replacer

示例代码:

package main
import (
  "fmt"
  "strings"
)
func main() {
  var str1 string = "  heLLo,goLang  "
  newReplacer1 := strings.NewReplacer(" ","++", ",", "==") // ++++heLLo==goLang++++
  fmt.Println(newReplacer1.Replace(str1))
}

参考文章

  • 官方文档
  • 谢伟 - 《Go语言项目开发上手指南》机械工业出版社
相关文章
|
1月前
|
Shell Go API
Go语言grequests库并发请求的实战案例
Go语言grequests库并发请求的实战案例
|
2月前
|
Rust 安全 算法
Go标准库的新 math/rand
Go标准库的新 math/rand
|
15天前
|
Linux 编译器 Go
cgo--在Go中链接外部C库
cgo--在Go中链接外部C库
|
2月前
|
JSON 中间件 Go
go语言后端开发学习(四) —— 在go项目中使用Zap日志库
本文详细介绍了如何在Go项目中集成并配置Zap日志库。首先通过`go get -u go.uber.org/zap`命令安装Zap,接着展示了`Logger`与`Sugared Logger`两种日志记录器的基本用法。随后深入探讨了Zap的高级配置,包括如何将日志输出至文件、调整时间格式、记录调用者信息以及日志分割等。最后,文章演示了如何在gin框架中集成Zap,通过自定义中间件实现了日志记录和异常恢复功能。通过这些步骤,读者可以掌握Zap在实际项目中的应用与定制方法
107 1
go语言后端开发学习(四) —— 在go项目中使用Zap日志库
|
2月前
|
存储 JSON 前端开发
一文搞懂 Go 1.21 的日志标准库 - slog
一文搞懂 Go 1.21 的日志标准库 - slog
69 2
|
2月前
|
Prometheus Cloud Native Go
Go 1.22 标准库 slices 新增函数和一些旧函数增加新特性
Go 1.22 标准库 slices 新增函数和一些旧函数增加新特性
|
2月前
|
XML Go 数据库
|
1天前
|
Java 编译器 Go
探索Go语言的性能优化技巧
在本文中,我们将深入探讨Go语言的底层机制,以及如何通过代码层面的优化来提升程序性能。我们将讨论内存管理、并发控制以及编译器优化等关键领域,为你提供一系列实用的技巧和最佳实践。
|
1天前
|
Cloud Native Go API
Go语言在微服务架构中的创新应用与实践
本文深入探讨了Go语言在构建高效、可扩展的微服务架构中的应用。Go语言以其轻量级协程(goroutine)和强大的并发处理能力,成为微服务开发的首选语言之一。通过实际案例分析,本文展示了如何利用Go语言的特性优化微服务的设计与实现,提高系统的响应速度和稳定性。文章还讨论了Go语言在微服务生态中的角色,以及面临的挑战和未来发展趋势。
|
1天前
|
安全 Go 调度
探索Go语言的并发模式:协程与通道的协同作用
Go语言以其并发能力闻名于世,而协程(goroutine)和通道(channel)是实现并发的两大利器。本文将深入了解Go语言中协程的轻量级特性,探讨如何利用通道进行协程间的安全通信,并通过实际案例演示如何将这两者结合起来,构建高效且可靠的并发系统。