Golang字符串操作大全

新手学习Golang,想请教大家关于字符串操作的常见用法和技巧。比如:

  1. 如何高效地进行字符串拼接?
  2. 字符串比较时有哪些注意事项?
  3. 常用的字符串处理函数有哪些?
  4. 中文字符串处理有什么特殊方法吗?
  5. 字符串和字节切片如何相互转换? 希望能得到一些实际代码示例和性能优化的建议,谢谢!
2 回复

Golang字符串常用操作:

  • 长度:len(str)
  • 遍历:for…range
  • 拼接:+、fmt.Sprintf、strings.Join
  • 分割:strings.Split
  • 包含:strings.Contains
  • 替换:strings.Replace
  • 大小写:ToLower/ToUpper
  • 修剪:strings.Trim
  • 转换:strconv包
  • 子串:str[start:end]

注意字符串不可变,操作会生成新字符串。

更多关于Golang字符串操作大全的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Golang字符串操作大全

字符串基础操作

字符串声明和初始化

var str1 string = "Hello"
str2 := "World"
str3 := `多行
字符串`

字符串长度

str := "Hello, 世界"
length := len(str)  // 返回字节数:13
runeCount := utf8.RuneCountInString(str)  // 返回字符数:9

字符串拼接

使用 + 操作符

str1 := "Hello"
str2 := "World"
result := str1 + " " + str2

使用 fmt.Sprintf

name := "Alice"
age := 25
result := fmt.Sprintf("姓名:%s,年龄:%d", name, age)

使用 strings.Builder(高效)

var builder strings.Builder
builder.WriteString("Hello")
builder.WriteString(" ")
builder.WriteString("World")
result := builder.String()

使用 strings.Join

parts := []string{"Go", "语言", "编程"}
result := strings.Join(parts, "-")  // "Go-语言-编程"

字符串分割

按空格分割

str := "Go 语言 编程"
parts := strings.Fields(str)  // ["Go", "语言", "编程"]

按指定分隔符分割

str := "a,b,c,d"
parts := strings.Split(str, ",")  // ["a", "b", "c", "d"]

按分隔符分割,保留空字符串

str := "a,,b,c"
parts := strings.Split(str, ",")  // ["a", "", "b", "c"]

字符串查找和替换

检查是否包含子串

str := "Hello World"
contains := strings.Contains(str, "World")  // true

查找子串位置

str := "Hello World"
index := strings.Index(str, "World")  // 6
lastIndex := strings.LastIndex(str, "l")  // 9

替换字符串

str := "hello world"
newStr := strings.Replace(str, "world", "Go", -1)  // "hello Go"

前缀和后缀检查

str := "example.txt"
hasPrefix := strings.HasPrefix(str, "example")  // true
hasSuffix := strings.HasSuffix(str, ".txt")     // true

字符串转换

大小写转换

str := "Hello World"
lower := strings.ToLower(str)  // "hello world"
upper := strings.ToUpper(str)  // "HELLO WORLD"

字符串修剪

str := "  Hello World  "
trimmed := strings.TrimSpace(str)        // "Hello World"
trimmedLeft := strings.TrimLeft(str, " ") // "Hello World  "

字符串比较

相等比较

str1 := "hello"
str2 := "HELLO"
equal := str1 == str2                    // false
equalIgnoreCase := strings.EqualFold(str1, str2)  // true

字符串遍历

按字节遍历

str := "Hello"
for i := 0; i < len(str); i++ {
    fmt.Printf("%c ", str[i])
}

按字符遍历(推荐)

str := "Hello, 世界"
for _, char := range str {
    fmt.Printf("%c ", char)
}

字符串与字节切片转换

// 字符串转字节切片
str := "Hello"
bytes := []byte(str)

// 字节切片转字符串
newStr := string(bytes)

常用字符串函数

// 重复字符串
repeated := strings.Repeat("Go", 3)  // "GoGoGo"

// 字符串映射
mapped := strings.Map(func(r rune) rune {
    if r == 'a' {
        return 'A'
    }
    return r
}, "abc")  // "Abc"

// 统计出现次数
count := strings.Count("hello", "l")  // 2

这些是Go语言中常用的字符串操作方法,涵盖了字符串处理的大部分需求。

回到顶部