您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 如何使用Go中常用的strings函数
Go语言标准库中的`strings`包提供了大量高效的字符串处理函数,是日常开发中不可或缺的工具。本文将详细介绍最常用的15个`strings`函数,并通过代码示例演示它们的实际应用场景。
## 1. 字符串基础操作
### 1.1 Contains - 检查子串
```go
func Contains(s, substr string) bool
检查字符串s
是否包含子串substr
:
fmt.Println(strings.Contains("hello world", "hello")) // true
fmt.Println(strings.Contains("hello", "x")) // false
func Count(s, substr string) int
统计子串substr
在s
中出现的次数(非重叠):
fmt.Println(strings.Count("cheese", "e")) // 3
fmt.Println(strings.Count("five", "")) // 5 (注意空串的特殊情况)
func HasPrefix(s, prefix string) bool
func HasSuffix(s, suffix string) bool
检查字符串是否以指定内容开头或结尾:
fmt.Println(strings.HasPrefix("Gopher", "Go")) // true
fmt.Println(strings.HasSuffix("Amigo", "go")) // true
func ToUpper(s string) string
func ToLower(s string) string
全字母大小写转换:
fmt.Println(strings.ToUpper("Gopher")) // "GOPHER"
fmt.Println(strings.ToLower("GOPHER")) // "gopher"
func TrimSpace(s string) string
去除字符串首尾的空白字符(包括空格、制表符、换行符等):
fmt.Println(strings.TrimSpace(" \t\n Hello \n\t\r\n")) // "Hello"
func Replace(s, old, new string, n int) string
替换字符串中的内容,n
指定替换次数(-1表示全部替换):
fmt.Println(strings.Replace("oink oink oink", "k", "ky", 2))
// 输出: "oinky oinky oink"
func Split(s, sep string) []string
按照分隔符sep
分割字符串:
fmt.Printf("%q\n", strings.Split("a,b,c", ",")) // ["a" "b" "c"]
fmt.Printf("%q\n", strings.Split(" xyz ", "")) // [" " "x" "y" "z" " "]
func Join(elems []string, sep string) string
将字符串切片用分隔符连接:
s := []string{"foo", "bar", "baz"}
fmt.Println(strings.Join(s, ", ")) // "foo, bar, baz"
func Fields(s string) []string
按空白字符分割字符串(连续的空白视为单个分隔符):
fmt.Printf("Fields are: %q", strings.Fields(" foo bar baz "))
// 输出: ["foo" "bar" "baz"]
func Index(s, substr string) int
返回子串首次出现的索引,不存在则返回-1:
fmt.Println(strings.Index("chicken", "ken")) // 4
fmt.Println(strings.Index("chicken", "dmr")) // -1
func LastIndex(s, substr string) int
返回子串最后一次出现的索引:
fmt.Println(strings.LastIndex("go gopher", "go")) // 3
func IndexAny(s, chars string) int
查找字符集中任意字符首次出现的位置:
fmt.Println(strings.IndexAny("chicken", "aeiouy")) // 2
fmt.Println(strings.IndexAny("crwth", "aeiouy")) // -1
func Repeat(s string, count int) string
将字符串重复指定次数:
fmt.Println("ba" + strings.Repeat("na", 2)) // "banana"
strings.Builder
类型提供了高效的字符串构建方式:
var b strings.Builder
for i := 3; i >= 1; i-- {
fmt.Fprintf(&b, "%d...", i)
}
b.WriteString("ignition")
fmt.Println(b.String()) // "3...2...1...ignition"
func Map(mapping func(rune) rune, s string) string
对字符串中的每个字符执行映射函数:
rot13 := func(r rune) rune {
switch {
case r >= 'A' && r <= 'Z':
return 'A' + (r-'A'+13)%26
case r >= 'a' && r <= 'z':
return 'a' + (r-'a'+13)%26
}
return r
}
fmt.Println(strings.Map(rot13, "'Twas brillig..."))
func Compare(a, b string) int
按字典序比较字符串(通常直接使用==更高效):
fmt.Println(strings.Compare("a", "b")) // -1
fmt.Println(strings.Compare("a", "a")) // 0
fmt.Println(strings.Compare("b", "a")) // 1
strings.Builder
而非+
[]byte
转换可能更高效strings.SplitN
或strings.SplitAfter
等变体函数Go的strings
包提供了丰富而高效的字符串处理功能,覆盖了大多数日常开发需求。通过合理组合这些函数,可以优雅地解决复杂的字符串处理问题。建议读者在实际项目中多加练习,熟练掌握这些工具的使用方法。
注意:本文基于Go 1.20版本编写,部分函数在不同版本中可能有细微差异 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。