Golang中如何仅获取字符串的前7个字符
Golang中如何仅获取字符串的前7个字符 我有一个姓名字段,我只想获取前7个字母,并截断剩余部分。
我尝试了以下方法:
SurName := strings.TrimSpace(Name)
NameTruncate := SurName[:7]
但如果用户名的字符数少于7个,我会遇到以下错误: panic: runtime error: slice bounds out of range [:7] with length 5
有什么建议吗?
3 回复
func min(a, b int) int {
if a < b {
return a
}
return b
}
SurName := strings.TrimSpace(Name)
NameTruncate := SurName[:min(len(SurName, 7))]
更多关于Golang中如何仅获取字符串的前7个字符的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
一种略有不同的方法(https://play.golang.org/p/ktha5bpocV-)
package main
import (
"fmt"
"strings"
)
func nameSlice(name string, desiredLength int) string {
if len(name) < desiredLength {
return name[:len(name)]
}
return name[:desiredLength]
}
func main() {
var desiredLength int
var Name string
var SurName string
desiredLength = 4
Name = " my name "
SurName = strings.TrimSpace(Name)
fmt.Println(nameSlice(SurName, desiredLength))
desiredLength = 20
Name = " my long name "
SurName = strings.TrimSpace(Name)
fmt.Println(nameSlice(SurName, desiredLength))
}
你可以使用条件判断来避免切片越界。以下是一个示例:
func truncateName(name string, maxLen int) string {
trimmed := strings.TrimSpace(name)
if len(trimmed) <= maxLen {
return trimmed
}
return trimmed[:maxLen]
}
// 使用示例
Name := "张三"
NameTruncate := truncateName(Name, 7)
fmt.Println(NameTruncate) // 输出:张三
Name2 := "Alexander Hamilton"
NameTruncate2 := truncateName(Name2, 7)
fmt.Println(NameTruncate2) // 输出:Alexand
或者更简洁的写法:
SurName := strings.TrimSpace(Name)
if len(SurName) > 7 {
SurName = SurName[:7]
}
NameTruncate := SurName
这样就能安全地处理任意长度的字符串,不会出现切片越界错误。

