Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > Go统计字符

Go语言实现统计字符串中每个字符出现的次数

作者:程序员爱钓鱼

这篇文章主要为大家详细介绍了如何使用Go语言开发一个简易频率分析器,实现统计字符串中每个字符出现的次数,感兴趣的小伙伴可以了解一下

一、 案例目标

本案例将实现一个程序,接收用户输入的一段文字,并统计其中每个字符(包括中文、英文、数字等)出现的次数,并按字符输出。

例如输入:

Hello, 世界!

输出:

H: 1
e: 1
l: 2
o: 1
,: 1
 : 1
世: 1
界: 1
!: 1

二、 应用场景举例

三、 涉及知识点讲解

知识点说明
map[rune]intGo 中用于统计频率的典型用法
rune支持 Unicode 字符(中文、表情、特殊符号)
for _, r := range str正确遍历字符串每个字符(而不是每个字节)

四、实现需求

五、 完整代码实现

package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	fmt.Print("请输入一段文字:")
	input, _ := reader.ReadString('\n')

	counts := countCharacters(input)

	// 排序输出
	var keys []rune
	for k := range counts {
		keys = append(keys, k)
	}
	sort.Slice(keys, func(i, j int) bool {
		return keys[i] < keys[j]
	})

	fmt.Println("\n字符统计结果:")
	for _, r := range keys {
		fmt.Printf("%q: %d\n", r, counts[r])
	}
}

// 统计字符出现次数
func countCharacters(s string) map[rune]int {
	result := make(map[rune]int)
	for _, r := range []rune(s) {
		result[r]++
	}
	return result
}

六、运行示例

示例1:

请输入一段文字:hello, 世界

字符统计结果:
'\t': 1
',': 1
'e': 1
'h': 1
'l': 2
'o': 1
'世': 1
'界': 1
'\n': 1

'\n''\t' 说明:默认输入带有换行符,可根据需要清洗。

七、 核心代码解析

代码段说明
map[rune]int创建一个以字符为键、出现次数为值的映射
[]rune(s)将字符串转为字符切片,避免中文字符拆分错误
sort.Slice将输出结果按字符顺序排序

八、 拓展练习建议

九、 常见错误提示

小结

通过这个案例,你学会了:

这是实际项目中非常有价值的一种“文本特征提取”技术,是通往 NLP 和算法世界的一扇小门。

到此这篇关于Go语言实现统计字符串中每个字符出现的次数的文章就介绍到这了,更多相关Go统计字符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文