Golang字符串操作大全
新手学习Golang,想请教大家关于字符串操作的常见用法和技巧。比如:
- 如何高效地进行字符串拼接?
- 字符串比较时有哪些注意事项?
- 常用的字符串处理函数有哪些?
- 中文字符串处理有什么特殊方法吗?
- 字符串和字节切片如何相互转换? 希望能得到一些实际代码示例和性能优化的建议,谢谢!
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语言中常用的字符串操作方法,涵盖了字符串处理的大部分需求。

