当前位置: 代码网 > it编程>前端脚本>Golang > Go语言字符串处理库strings包详解

Go语言字符串处理库strings包详解

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

golang字符串处理库strings

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

1. 导入strings包

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

2. 字符串的查找

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

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

示例代码:

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

str := "jingtian,大侠"
fmt.println(strings.containsany(str, "z大"))
都不包含返回false
fmt.println(strings.containsany(str, "z大"))

3. 字符串计数

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

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。

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中最后一次出现的位置。
查的是字符串最后一次首字母出现的位置

示例代码:

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开头/结尾。

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必须写,没有默认值

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

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切分成单个字符的切片。

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连接起来,并返回连接后的字符串。

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方法。
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中的所有字符转换为大写或小写。

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开头和结尾的空白字符(如空格、换行符等)。

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指定的字符。

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次,并返回结果字符串。

package main  
import (  
    "fmt"  
    "strings"  
)  
func main() {  
    s := "go!"  
    repeated := strings.repeat(s, 3)  
    fmt.println(repeated) // 输出: go!go!go!  
}

15. 字符串提取

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

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包还有很多方法,我们可以自己点一下看看
看源码,看这个函数如何使用

到此这篇关于go语言字符串处理库--strings的文章就介绍到这了,更多相关go字符串处理库strings内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

  • Go语言中hot path的作用

    Go语言中hot path的作用

    在 go 语言以及其他编程语言中,“hot path” 是指在性能敏感的应用程序中频繁执行的代码路径。对于 go 开发工程师来说,理解和... [阅读全文]
  • Go语言中常量的实现

    Go语言中常量的实现

    常量可以理解为是一个存储了不可以改变的值的变量。常量主要用于特殊值的语义化,使这些值在更容易维护的情况下不会被程序所修改。go 语言中声明常量使用的关键字是co... [阅读全文]
  • GO语言打包成.exe程序的方法

    GO语言打包成.exe程序的方法

    go语言的强大之处在于可以轻松将源代码编译为独立的可执行文件。以下是将go程序打包成windows系统下的.exe文件的详细步骤。1. 安装go编译器在进行打包... [阅读全文]
  • go语言中proto文件的使用

    go语言中proto文件的使用

    在 go 语言中,.proto文件是用于定义 protocol buffers 数据结构和服务的文件格式。protocol buffers 是一种语言无关、平台... [阅读全文]
  • 使用Go语言实现简单聊天系统

    使用Go语言实现简单聊天系统

    在互联网时代,聊天系统是常见的应用场景之一。无论是即时通讯、在线客服还是多人游戏中的消息系统,聊天功能的实现都是必不可少的。本文将使用 go 语言,结合 web... [阅读全文]
  • go语言中的数组指针和指针数组的区别小结

    1.介绍大家知道c语言之所以强大,就是因为c语言支持指针,而且权限特别大,c语言可以对计算机中任何内存的指针进行操作,这样自然而然也会带来一些不安全的因素,所以在golang中,「…

    2024年11月03日 前端脚本

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com