广告位联系
返回顶部
分享到

Go语言字符串处理库strings包介绍

Golang 来源:互联网 作者:佚名 发布时间:2024-09-29 21:42:54 人浏览
摘要

Golang字符串处理库strings 在Go语言中,strings包是一个非常重要且功能丰富的标准库,它提供了一系列用于操作字符串的函数。从基本的字符串查找、替换、分割到高级的比较、格式化等,strin

Golang字符串处理库strings

在Go语言中,strings包是一个非常重要且功能丰富的标准库,它提供了一系列用于操作字符串的函数。从基本的字符串查找、替换、分割到高级的比较、格式化等,strings包几乎涵盖了所有字符串处理的需求。

1. 导入strings包

在Go程序中,使用strings包之前需要先导入它。导入语句如下:
import “strings”

2. 字符串的查找

1. 判断字符串是否包含子串

strings.Contains(s, substr string) bool 函数用于判断字符串s是否包含子串substr,如果包含则返回true,否则返回false。

示例代码:

1

2

3

4

5

6

7

8

9

10

package main

import (

    "fmt"

    "strings"

)

func main() {

    str := "Hello, World!"

    substr := "Hello"

    fmt.Println(strings.Contains(str, substr)) // 输出: true

}

2. 判断某个字符串是否包含了多个字符串中的某一个

ContainsAny函数用于检查字符串s是否包含字符串chars中的任何Unicode码点。如果包含,则返回true;否则返回false。只要包含一个就返回true

1

2

3

4

str := "jingtian,大侠"

fmt.Println(strings.ContainsAny(str, "z大"))

都不包含返回false

fmt.Println(strings.ContainsAny(str, "z大"))

3. 字符串计数

Count(s, substr string) int 方法返回字符串s中包含子串substr的个数。

1

2

3

4

5

6

7

8

9

package main 

import ( 

    "fmt" 

    "strings" 

func main() { 

    s := "hello world, world" 

    fmt.Println(strings.Count(s, "world")) // 输出: 2 

}

4. 查找子串在字符串中第一次出现的位置

strings.Index(s, substr string) int函数用于查找子串substr在字符串s中首次出现的位置(索引从0开始),如果未找到则返回-1。

1

2

3

4

5

6

7

8

9

10

11

12

package main 

import ( 

    "fmt" 

    "strings" 

func main() { 

    // 有两个World,查出第一个World的第一个字母出现的位置

    str := "Hello, World! World" 

    substr := "World" 

    index := strings.Index(str, substr) 

    fmt.Println(index) // 输出: 7 

}

5. 查找子串最后一次出现的位置

strings.LastIndex(s, substr string) int函数与Index类似,但它查找的是子串substr在字符串s中最后一次出现的位置。
查的是字符串最后一次首字母出现的位置

示例代码:

1

2

3

4

5

6

7

8

9

10

11

package main 

import ( 

    "fmt" 

    "strings" 

func main() { 

    str := "Hello, Hello, World!" 

    substr := "Hello" 

    lastIndex := strings.LastIndex(str, substr) 

    fmt.Println(lastIndex) // 输出: 7   查的是字符串最后一次首字母出现的位置

}

6. 判断字符串是否以指定前缀或后缀开头/结尾

strings.HasPrefix(s, prefix string) bool和strings.HasSuffix(s, suffix string) bool函数分别用于判断字符串s是否以指定的前缀prefix或后缀suffix开头/结尾。

1

2

3

4

5

6

7

8

9

10

package main 

import ( 

    "fmt" 

    "strings" 

func main() { 

    str := "Hello, World!" 

    fmt.Println(strings.HasPrefix(str, "Hello")) // 输出: true 

    fmt.Println(strings.HasSuffix(str, "World!")) // 输出: true 

}

7. 字符串的替换

替换字符串中的子串
strings.Replace(s, old, new string, n int) string函数用于将字符串s中的old子串替换为new子串,n表示替换的次数。如果n为小于0,则表示替换所有匹配的子串。
n必须写,没有默认值

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

package main 

import ( 

    "fmt" 

    "strings" 

func main() { 

    str := "Hello, World!" 

    oldSubstr := "Hello" 

    newSubstr := "Hi" 

    newStr := strings.Replace(str, oldSubstr, newSubstr, 1) 

    fmt.Println(newStr) // 输出: Hi, World! 

    // 替换所有匹配的子串 

    newStrAll := strings.Replace(str, "o", "a", -1) 

    fmt.Println(newStrAll) // 输出: Hella, Warld! 

}

ReplaceAll
从Go 1.12版本开始,strings包引入了ReplaceAll函数,用于替换字符串s中所有的old子串为new。
func ReplaceAll(s, old, new string) string

1

2

3

4

5

6

7

8

9

10

package main 

import ( 

    "fmt" 

    "strings" 

func main() { 

    str := "Hello, World! Hello, Go!" 

    newStr := strings.ReplaceAll(str, "Hello", "Hi") 

    fmt.Println(newStr) // 输出: Hi, World! Hi, Go! 

}

8. 字符串的分割

将字符串分割成切片
strings.Split(s, sep string) []string函数用于将字符串s按照指定的分隔符sep进行分割,并返回一个字符串切片。
如果sep为空字符串,或者一个找不到的分隔符,则会将字符串s切分成单个字符的切片。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

package main 

import ( 

    "fmt" 

    "strings" 

func main() { 

    str := "Hello, World!" 

    sep := ", " 

    //以逗号空格作为切割符

    strs := strings.Split(str, sep) 

    fmt.Println(strs) // 输出: [Hello World!] 

    // 使用空字符串作为分隔符 

    strsEmpty := strings.Split(str, "") 

    fmt.Println(strsEmpty) // 输出: [H e l l o ,   W o r l d !] 

}

9. 字符串的连接

将切片中的字符串连接起来
strings.Join(a []string, sep string) string函数用于将字符串切片a中的字符串使用指定的分隔符sep连接起来,并返回连接后的字符串。

1

2

3

4

5

6

7

8

9

10

11

12

package main 

import ( 

    "fmt" 

    "strings" 

func main() { 

    //字符串拼接,数组不能拼接,只能拼接切片

    strs := []string{"Hello", "World!"} 

    sep := ", " 

    joinedStr := strings.Join(strs, sep) 

    fmt.Println(joinedStr) // 输出: Hello, World! 

}

10. 字符串比较

虽然strings包本身不直接提供字符串比较的函数(因为Go语言的==和!=操作符已经足够用于比较字符串),但了解如何比较字符串并理解其背后的机制是很重要的。特别是当涉及到比较时区分大小写或不区分大小写时。

  • 区分大小写比较:直接使用==和!=。
  • 不区分大小写比较:可以使用strings.EqualFold方法。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

package main 

import ( 

    "fmt" 

    "strings" 

func main() { 

    s1 := "Hello, Go!" 

    s2 := "hello, go!" 

    s3 := "Hello, Go!" 

    // 区分大小写比较 

    fmt.Println(s1 == s2) // 输出: false 

    fmt.Println(s1 == s3) // 输出: true 

    // 不区分大小写比较 

    fmt.Println(strings.EqualFold(s1, s2)) // 输出: true 

}

11. 字符串的大小写转换

strings.ToUpper(s string) string和strings.ToLower(s string) string函数分别用于将字符串s中的所有字符转换为大写或小写。

1

2

3

4

5

6

7

8

9

10

11

12

package main 

import ( 

    "fmt" 

    "strings" 

func main() { 

    str := "Hello, World!" 

    upperStr := strings.ToUpper(str) 

    lowerStr := strings.ToLower(str) 

    fmt.Println(upperStr) // 输出: HELLO, WORLD! 

    fmt.Println(lowerStr) // 输出: hello, world! 

}

12. 去除字符串首尾的空白字符

strings.TrimSpace(s string) string函数用于去除字符串s开头和结尾的空白字符(如空格、换行符等)。

1

2

3

4

5

6

7

8

9

10

package main 

import ( 

    "fmt" 

    "strings" 

func main() { 

    str := " Hello, World! " 

    trimmedStr := strings.TrimSpace(str) 

    fmt.Println(trimmedStr) // 输出: Hello, World! 

}

13. 去除字符串首尾指定的字符

strings.Trim(s, cutset string) string函数用于去除字符串s开头和结尾由cutset指定的字符。

1

2

3

4

5

6

7

8

9

10

package main 

import ( 

    "fmt" 

    "strings" 

func main() { 

    str := "!!!Hello, World!!!" 

    trimmedStr := strings.Trim(str, "! ") 

    fmt.Println(trimmedStr) // 输出: Hello, World 

}

14. 字符串的重复

Repeat(s string, count int) string方法将字符串s重复count次,并返回结果字符串。

1

2

3

4

5

6

7

8

9

10

package main 

import ( 

    "fmt" 

    "strings" 

func main() { 

    s := "Go!" 

    repeated := strings.Repeat(s, 3) 

    fmt.Println(repeated) // 输出: Go!Go!Go! 

}

15. 字符串提取

可以通过字符串下标提取想要的字符串范围,取单个得到的是uint8的ASIIC吗数字,取多个得到的是字符串

1

2

3

4

5

6

str := "Hello, World! Hello, Go!"

fmt.Println(str[0:5])        //Hello

fmt.Printf("%T\n", str[0:5]) //string

fmt.Printf("%T\n", str[0])   //uint8

//单个字符可以通过string转化为字符串

fmt.Println(string(str[0]))   //H

strings包还有很多方法,我们可以自己点一下看看
看源码,看这个函数如何使用


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • 怎么使用工具自动监测SSL证书有效期并发送提醒
    自从云厂商的免费ssl证书改成3个月,而且证书数量还是20个之后,自己网站的ssl证书就换成了其它免费方案。但是免费方案不会提醒证书过
  • Go语言字符串处理库strings包介绍

    Go语言字符串处理库strings包介绍
    Golang字符串处理库strings 在Go语言中,strings包是一个非常重要且功能丰富的标准库,它提供了一系列用于操作字符串的函数。从基本的字符串
  • Go语言中的指针的使用介绍
    1、Go 语言中指针的介绍 1.1、什么是指针? 指针是一种变量,它存储了另一个变量的内存地址。在 Go 中,你可以通过取地址操作符获取变量
  • Go环境变量配置,及GOROOT、GOPATH的区别

    Go环境变量配置,及GOROOT、GOPATH的区别
    一、安装Go go下载地址: https://golang.google.cn/dl/ windows下载安装,有两种方式。解压和直接安装 方式一:直接下载安装包。以.msi结尾的文件。
  • golang interface指针实现
    在 Go 语言中,接口(interface)是一种类型,它定义了一组方法的集合。任何实现了接口中所有方法的类型都会自动满足该接口。当涉及到指针
  • Go语言等待组sync.WaitGrou的使用
    Go语言中除了可以使用通道(channel)和互斥锁进行两个并发程序间的同步外,还可以使用等待组进行多个任务的同步,等待组可以保证在并
  • Go语言中的接口类型介绍
    接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。 1.接口类型 1.1 接口类型的说明 Go语言中
  • Go语言占位符的使用介绍
    Golang的字符串占位符在fmt包的各种打印函数中使用,如fmt.Printf、fmt.Sprintf。 变量值与类型的打印 %v: 打印变量的值 %v会根据变量的类型选择
  • 基于Golang实现Kubernetes边车模式

    基于Golang实现Kubernetes边车模式
    在这篇文章中,我们会介绍 Sidecar 模式,并创建两个基于 Go 的容器化微服务,然后部署到 Kubernetes 上。 什么是 Sidecar 模式? Sidecar 模式是一
  • 使用Go语言实现基于泛型的Jaccard相似度算法

    使用Go语言实现基于泛型的Jaccard相似度算法
    基本原理 跳表: jaccard相似度: jaccard相似度的代码实现: 时间复杂度分析: 快速jaccard算法: 代码实现,这个要求两个集合都是有序的:
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计