【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语言项目开发上手指南》机械工业出版社
相关文章
|
5月前
|
JavaScript 前端开发 Java
通义灵码 Rules 库合集来了,覆盖Java、TypeScript、Python、Go、JavaScript 等
通义灵码新上的外挂 Project Rules 获得了开发者的一致好评:最小成本适配我的开发风格、相当把团队经验沉淀下来,是个很好功能……
1117 103
|
6月前
|
Go 开发者
go-carbon v2.6.0 重大版本更新,轻量级、语义化、对开发者友好的 golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 Golang 时间处理库,提供了对时间穿越、时间差值、时间极值、时间判断、星座、星座、农历、儒略日 / 简化儒略日、波斯历 / 伊朗历的支持
114 3
|
7月前
|
网络协议 Linux Go
用 Go 基于 epoll 实现一个最小化的IO库
Go 语言社区中存在多个异步网络框架,如 evio、nbio、gnet 和 netpoll 等。这些框架旨在解决标准库 netpoll 的低效问题,如一个连接占用一个 goroutine 导致的资源浪费。easyio 是一个最小化的 IO 框架,核心代码不超过 500 行,仅实现 Linux 下的 epoll 和 TCP 协议。它通过 Worker Pool、Buffer 等优化提高了性能,并提供了简单的事件处理机制。
|
10月前
|
JSON Go 开发者
go-carbon v2.5.0 发布,轻量级、语义化、对开发者友好的 golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 Golang 时间处理库,提供了对时间穿越、时间差值、时间极值、时间判断、星座、星座、农历、儒略日 / 简化儒略日、波斯历 / 伊朗历的支持。
208 4
|
10月前
|
Go 索引
go语言使用strings包
go语言使用strings包
208 3
|
10月前
|
存储 Cloud Native Shell
go库介绍:Golang中的Viper库
Viper 是 Golang 中的一个强大配置管理库,支持环境变量、命令行参数、远程配置等多种配置来源。本文详细介绍了 Viper 的核心特点、应用场景及使用方法,并通过示例展示了其强大功能。无论是简单的 CLI 工具还是复杂的分布式系统,Viper 都能提供优雅的配置管理方案。
241 6
|
10月前
|
JSON 安全 网络协议
go语言使用内置函数和标准库
【10月更文挑战第18天】
134 3
|
10月前
|
存储 Go PHP
Go语言中的加解密利器:go-crypto库全解析
在软件开发中,数据安全和隐私保护至关重要。`go-crypto` 是一个专为 Golang 设计的加密解密工具库,支持 AES 和 RSA 等加密算法,帮助开发者轻松实现数据的加密和解密,保障数据传输和存储的安全性。本文将详细介绍 `go-crypto` 的安装、特性及应用实例。
505 0
|
7月前
|
编译器 Go
揭秘 Go 语言中空结构体的强大用法
Go 语言中的空结构体 `struct{}` 不包含任何字段,不占用内存空间。它在实际编程中有多种典型用法:1) 结合 map 实现集合(set)类型;2) 与 channel 搭配用于信号通知;3) 申请超大容量的 Slice 和 Array 以节省内存;4) 作为接口实现时明确表示不关注值。此外,需要注意的是,空结构体作为字段时可能会因内存对齐原因占用额外空间。建议将空结构体放在外层结构体的第一个字段以优化内存使用。
|
7月前
|
运维 监控 算法
监控局域网其他电脑:Go 语言迪杰斯特拉算法的高效应用
在信息化时代,监控局域网成为网络管理与安全防护的关键需求。本文探讨了迪杰斯特拉(Dijkstra)算法在监控局域网中的应用,通过计算最短路径优化数据传输和故障检测。文中提供了使用Go语言实现的代码例程,展示了如何高效地进行网络监控,确保局域网的稳定运行和数据安全。迪杰斯特拉算法能减少传输延迟和带宽消耗,及时发现并处理网络故障,适用于复杂网络环境下的管理和维护。