go语言的strings库提供了高效、直观的字符串处理方法。查找操作可用strings.contains判断子串是否存在,strings.index和strings.lastindex分别获取子串首次和末次出现的位置,strings.hasprefix和hassuffix用于判断前缀和后缀。替换操作包括strings.replace控制替换次数及strings.replaceall进行全部替换。分割与拼接通过strings.split按分隔符分割字符串,strings.splitn限制分割数量,strings.join将切片重新连接为字符串。格式化操作包含strings.toupper和tolower转换大小写,strings.title首字母大写。比较操作使用strings.equalfold忽略大小写比较,strings.compare按字典序比较字符串。边界处理如strings.trimspace清除空白,strings.trim移除指定字符,strings.trimprefix和trimsuffix去除前后缀。进阶工具中,strings.builder优化大量拼接操作,strings.newreplacer实现多规则替换,strings.reader将字符串作为io.reader使用,满足流式处理需求。这些功能共同构成了go语言处理字符串的强大基础库。

Go语言的
strings

strings
比如,要判断一个字符串是否包含另一个子串,
strings.Contains
strings.Index
strings.LastIndex
立即学习“go语言免费学习笔记(深入)”;

package main
import (
    "fmt"
    "strings"
)
func main() {
    text := "Go语言的strings库是处理字符串的利器,它让字符串操作变得简单而高效。"
    // 查找
    fmt.Println("是否包含'利器'?", strings.Contains(text, "利器")) // true
    fmt.Println("首次出现'字符串'的位置:", strings.Index(text, "字符串")) // 10 (UTF-8编码的字符索引)
    fmt.Println("最后出现'操作'的位置:", strings.LastIndex(text, "操作")) // 24
    // 替换
    newText := strings.Replace(text, "利器", "强大工具", 1) // 只替换第一个
    fmt.Println("替换一次后:", newText)
    allReplacedText := strings.ReplaceAll(text, "字符串", "文本") // 替换所有
    fmt.Println("替换所有后:", allReplacedText)
    // 分割与拼接
    sentence := "Go语言,strings库,实用方法"
    parts := strings.Split(sentence, ",")
    fmt.Println("分割结果:", parts) // [Go语言 strings库 实用方法]
    joinedText := strings.Join(parts, " - ")
    fmt.Println("拼接结果:", joinedText) // Go语言 - strings库 - 实用方法
}这些函数的设计哲学就是“一目了然”,你不需要去想底层的循环或者切片操作,直接调用即可。这对于快速开发和代码的可读性来说,无疑是巨大的福音。
在Go语言的日常开发中,对字符串进行查找、替换和分割几乎是家常便饭。
strings

查找操作:
strings.Contains(s, substr string) bool
s
substr
strings.Index(s, substr string) int
substr
s
strings.LastIndex(s, substr string) int
Index
strings.HasPrefix(s, prefix string) bool
strings.HasSuffix(s, suffix string) bool
Index
替换操作:
strings.Replace(s, old, new string, n int) string
n
n
strings.ReplaceAll(s, old, new string) string
Replace(s, old, new, -1)
分割与拼接操作:
strings.Split(s, sep string) []string
sep
s
strings.SplitN(s, sep string, n int) []string
Split
n
n > 0
n
n == 0
n < 0
Split
strings.Join(elems []string, sep string) string
Split
sep
字符串的格式化、比较和边界处理是日常开发中不可或缺的部分,
strings
格式化操作:
strings.ToUpper(s string) string
strings.ToLower(s string) string
strings.Title(s string) string
strings.ToTitle
golang.org/x/text/cases
strings.Title
比较操作:
strings.EqualFold(s, t string) bool
"GoLang"
"GoLang"
strings.Compare(a, b string) int
a == b
a < b
a > b
==
<
>
Compare
边界处理(修剪):
strings.TrimSpace(s string) string
strings.Trim(s, cutset string) string
cutset
strings.Trim("---hello---", "-")"hello"
TrimSpace
strings.TrimPrefix(s, prefix string) string
strings.TrimSuffix(s, suffix string) string
虽然
strings
io.Reader
高效拼接:strings.Builder
strings.Builder
package main
import (
    "fmt"
    "strings"
)
func main() {
    var sb strings.Builder
    for i := 0; i < 1000; i++ {
        sb.WriteString("hello")
        sb.WriteString(fmt.Sprintf("%d", i))
    }
    finalString := sb.String()
    fmt.Println("构建的字符串长度:", len(finalString))
    // fmt.Println(finalString) // 打印会很长
}strings.Builder
WriteString
WriteByte
io.Writer
String()
strings.Builder
+
复杂替换:strings.NewReplacer
strings.ReplaceAll
strings.NewReplacer
old, new
*strings.Replacer
Replacer
package main
import (
    "fmt"
    "strings"
)
func main() {
    replacer := strings.NewReplacer(
        "apple", "orange",
        "banana", "grape",
        "fruit", "produce",
    )
    text := "I like apple and banana, these fruits are delicious."
    replacedText := replacer.Replace(text)
    fmt.Println("多重替换后:", replacedText) // I like orange and grape, these produce are delicious.
}strings.NewReplacer
Replace
作为io.Reader
strings.Reader
io.Reader
io.Reader
json.NewDecoder
io.Copy
strings.Reader
package main
import (
    "fmt"
    "io"
    "strings"
)
func main() {
    data := "Hello, Go programming!"
    reader := strings.NewReader(data)
    // 模拟从Reader中读取数据
    buf := make([]byte, 5)
    n, err := reader.Read(buf)
    if err != nil && err != io.EOF {
        fmt.Println("读取错误:", err)
        return
    }
    fmt.Printf("读取了 %d 字节: %s\n", n, string(buf[:n])) // 读取了 5 字节: Hello
    // 可以继续读取
    n, err = reader.Read(buf)
    if err != nil && err != io.EOF {
        fmt.Println("读取错误:", err)
        return
    }
    fmt.Printf("继续读取了 %d 字节: %s\n", n, string(buf[:n])) // 继续读取了 5 字节: , Go
}strings.Reader
io.Reader
io.ReaderAt
io.Seeker
这些进阶工具,配合
strings
以上就是Golang的strings库有哪些实用方法 总结字符串处理的常用函数的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                 
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                            Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号