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

这样就能安全地处理任意长度的字符串,不会出现切片越界错误。

回到顶部