编程 Go语言中`strings`包的基本用法,包括字符串的搜索与匹配、拆分、修改及其他实用函数

2024-11-18 02:02:00 +0800 CST views 570

概述

字符串是一个非常常用的基础类型,strings 包提供了丰富的函数来操作 string 类型的变量。这些函数的调用方式大多相似,通常通过传入一个字符串作为参数,在该字符串上进行相应的处理。这些函数主要可以分为以下几类:

  • 字符串搜索与匹配
  • 字符串拆分
  • 字符串修改
  • 其他实用函数

字符串搜索与匹配

strings.Contains 可以检测字符串是否包含某个子串;strings.ContainsRune 可以检测字符串是否包含某个字符;strings.ContainsAny 可以检测字符串是否包含字符集中的任意一个字符。详细函数声明如下:

func Contains(s, substr string) bool
func ContainsRune(s string, r rune) bool
func ContainsAny(s, chars string) bool

除了简单的判断字符串是否包含子串外,还可以使用 strings.Index 在字符串中搜索某个子串,并获取子串的起始索引位置。如果子串不存在,则返回 -1。函数声明如下:

func Index(s, substr string) int

对于字节、字符、字符集合的搜索,也可以使用以下函数:

func IndexByte(s string, c byte) int        // 字节搜索
func IndexRune(s string, r rune) int        // 字符搜索
func IndexAny(s, chars string) int          // 字符集合搜索,匹配 chars 中的任意一个字符

这些搜索函数都返回第一个匹配的索引位置。此外,strings 包还提供了一系列函数来获取最后一个匹配项的索引下标,对应于每个 Index 函数都有一个 LastIndex 函数。例如 Index 返回第一个匹配子串的起始索引,LastIndex 则返回最后一个匹配子串的起始索引。详细函数声明如下:

func LastIndex(s, substr string) int
func LastIndexByte(s string, c byte) int
func LastIndexAny(s, chars string) int

字符串拆分

字符串拆分是字符串操作中非常常见的一类操作。strings 包支持两种拆分操作:SplitSplitAfter。两者的区别在于 Split 拆分后的结果中不包含分隔符;而 SplitAfter 则保留分隔符。例如 strings.Split("a,b,c", ",") 的结果是 ["a", "b", "c"];而 strings.SplitAfter("a,b,c", ",") 的结果是 ["a,", "b,", "c"]。函数声明如下:

func Split(s, sep string) []string
func SplitAfter(s, sep string) []string

如果希望使用一类字符作为分隔符,strings 包提供了 FieldsFunc 函数,通过传递一个自定义函数来确定某个字符是否为分隔符。下面是一个示例,其中所有非数字和非字母的字符都被视为分隔符:

package main

import (
    "fmt"
    "strings"
    "unicode"
)

func main() {
    str := "  hello&$ world"

    f := func(c rune) bool {
        return !unicode.IsLetter(c) && !unicode.IsNumber(c)
    }
    fmt.Printf("%q", strings.FieldsFunc(str, f))
}

函数声明如下:

func FieldsFunc(s string, f func(rune) bool) []string

实际使用中,也可以使用 Fields 函数,它用于删除字符串中所有的空白字符,相当于 FieldsFunc(s, unicode.IsSpace)

func Fields(s string) []string

字符串修改

Trim 系列函数用于删除字符串首尾的多余字符,包括以下几种:

  • Trim:删除字符串首尾的多余字符
  • TrimLeft:删除字符串左侧的多余字符
  • TrimRight:删除字符串右侧的多余字符
  • TrimSpace:删除字符串首尾的空格

函数声明如下:

func Trim(s string, cutset string) string
func TrimLeft(s string, cutset string) string
func TrimRight(s string, cutset string) string
func TrimSpace(s string) string

此外,strings 包还提供了一些用于字符串格式化的函数,其中最常用的是 ToLowerToUpper,分别用于将字符串转换为小写和大写。函数声明如下:

func ToLower(s string) string
func ToUpper(s string) string

其他实用函数

除了上述几类函数外,strings 包还提供了以下几个常用的实用函数:

  • Join:将多个字符串组装成一个字符串,各子串之间通过分隔符连接(相当于 Split 的逆操作)
  • Compare:通过字典序比较两个字符串的大小,相当于 ><== 运算
  • Count:统计字符串中某个子串的出现次数
  • Replace:替换字符串中的指定子串

函数声明如下:

func Join(a []string, sep string) string
func Compare(a, b string) int
func Count(s, substr string) int
func Replace(s, old, new string, n int) string

复制全文 生成海报 编程 Go语言 字符串处理

推荐文章

vue打包后如何进行调试错误
2024-11-17 18:20:37 +0800 CST
Vue3中如何处理组件的单元测试?
2024-11-18 15:00:45 +0800 CST
网络数据抓取神器 Pipet
2024-11-19 05:43:20 +0800 CST
markdowns滚动事件
2024-11-19 10:07:32 +0800 CST
Vue3中的v-slot指令有什么改变?
2024-11-18 07:32:50 +0800 CST
Shell 里给变量赋值为多行文本
2024-11-18 20:25:45 +0800 CST
Vue中的异步更新是如何实现的?
2024-11-18 19:24:29 +0800 CST
JavaScript 实现访问本地文件夹
2024-11-18 23:12:47 +0800 CST
Vue 3 路由守卫详解与实战
2024-11-17 04:39:17 +0800 CST
Vue3中的响应式原理是什么?
2024-11-19 09:43:12 +0800 CST
Golang中国地址生成扩展包
2024-11-19 06:01:16 +0800 CST
mendeley2 一个Python管理文献的库
2024-11-19 02:56:20 +0800 CST
在 Rust 生产项目中存储数据
2024-11-19 02:35:11 +0800 CST
api远程把word文件转换为pdf
2024-11-19 03:48:33 +0800 CST
在Rust项目中使用SQLite数据库
2024-11-19 08:48:00 +0800 CST
Vue3中的v-model指令有什么变化?
2024-11-18 20:00:17 +0800 CST
Gin 与 Layui 分页 HTML 生成工具
2024-11-19 09:20:21 +0800 CST
OpenCV 检测与跟踪移动物体
2024-11-18 15:27:01 +0800 CST
详解 Nginx 的 `sub_filter` 指令
2024-11-19 02:09:49 +0800 CST
程序员茄子在线接单