GoLang获取字符串内的字符,兼容单字节、三字节汉字和四字节符号等

发表时间:2022-08-29 06:42:45 作者:赛马牛

平常我们获取字符串可以这么获取:


str := "hello"
fmt.Print(str[0:1])
// 输出:h
fmt.Print(str[1:3])
// 输出:el


但是当字符串有中文或者其他字节长度的字符串的时候,我们就不能这么做了,例如:


str := "张三"
fmt.Print(str[0:1])
// 输出:


这是因为中文的字节长度不一样。下面我写两个方法可以准确获取字符串字符数和获取指定的字符串:


// golang获取字符串的每个字符
func main() {
    name := "张3call李4"
    strLen := GetStringLength(name)
    for i := 0; i <= strLen; i++ {
        fmt.Print(GetSubString(name, i, i+1))
    }
}

// 输出:张3call李4
// GetStringLength 兼容获取字符串长度,单字节、三字节的中文、四字节的符号都只算一个长度 func GetStringLength(str string) int { re := []rune(str) return len(re) } // GetSubString 兼容获取字符串的字符,单字节、三字节的中文、四字节的符号都只算一个长度 func GetSubString(str string, start int, end int) string { re := []rune(str) return string(re[start:end]) }


复制