GoLang获取字符串内的字符,兼容单字节、三字节汉字和四字节符号等
平常我们获取字符串可以这么获取:
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])
}