字符串的长度(个数)你真的会计算吗?

寅恪光潜
领域专家: 人工智能技术领域
2022-11-14 11:56:36
加精

有伙伴可能觉得这很容易,直接len(string)出来的长度不就是里面字符的个数吗?

func main() {
	s := `Hello`
	fmt.Printf("%d", len(s))//5
}

是的,这个对于字母来说是正确的,那如果夹杂中文呢?

func main() {
	s := `Hello 寅恪光潜`
	fmt.Printf("%d", len(s))//18
}

这个就统计不准确了,统计出来的是字节数,这里的中文三个字节,所以5+空格+3*4=18,那不是我们想要的。
别急,有这样一个方法:utf8.RuneCountInString

import (
	"fmt"
	"unicode/utf8"
)

func main() {
	s := `Hello 寅恪光潜`
	fmt.Printf("%d", utf8.RuneCountInString(s))//10
}

 或者转换成字符串数组来统计

func main() {
	s := `Hello 寅恪光潜`
	s1 := strings.Split(s, "")
	fmt.Printf("%T,%s,字符个数:%d", s1, s1, len(s1))
}
//[]string,[H e l l o   寅 恪 光 潜],字符个数:10

 

...全文
27 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-编程语言 发布问题, 以便更快地解决您的疑问

199

社区成员

发帖
与我相关
我的任务
社区描述
从零开始的小白到进阶成技术达人。 一起学习,一起进步。
golanggo1.19 个人社区 贵州省·贵阳市
社区管理员
  • 寅恪光潜
  • 网络豆
  • Somnus_小凯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

Go语言集各语言优势之大成,从基础到进阶

一起学习,一起进步,成为技术达人!

试试用AI创作助手写篇文章吧