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

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

概述

字符串是一个非常常用的基础类型,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语言 字符串处理

推荐文章

赚点点任务系统
2024-11-19 02:17:29 +0800 CST
npm速度过慢的解决办法
2024-11-19 10:10:39 +0800 CST
实现微信回调多域名的方法
2024-11-18 09:45:18 +0800 CST
从Go开发者的视角看Rust
2024-11-18 11:49:49 +0800 CST
JavaScript设计模式:组合模式
2024-11-18 11:14:46 +0800 CST
#免密码登录服务器
2024-11-19 04:29:52 +0800 CST
五个有趣且实用的Python实例
2024-11-19 07:32:35 +0800 CST
JavaScript 流程控制
2024-11-19 05:14:38 +0800 CST
Vue3中的Store模式有哪些改进?
2024-11-18 11:47:53 +0800 CST
向满屏的 Import 语句说再见!
2024-11-18 12:20:51 +0800 CST
GROMACS:一个美轮美奂的C++库
2024-11-18 19:43:29 +0800 CST
程序员茄子在线接单