废话不多说,直入主题
今天学习了通过Golang语言实现了统计文件内容中的字符,空格,数字,符号的数量, 当然也可以用来统计更多,例如:统计汉字,大写/小写字母等...仅需要更改部分代码即可.
知识点总结
代码实现前的思路分析:
- 打开一个文件,创建一个reader
- 每读取一行,就去统计该行有多少个字符,数字,空格等数量
- 然后将统计的数量储存到一个结构体内
- 引入的包有:bufio, io,os,fmt
源代码参考
package main
import (
"bufio"
"fmt"
"io"
"os"
)
/*
代码编写思路:
1- 打开一个文件,创建一个reader
2- 每读取一行,就去统计该行有多少个字符,数字,空格等数量
3 - 然后将结果存到一个结构体内
*/
// 定义一个结构体,用于存储统计结果
type CharCount struct {
ChCount int
NumCount int
SpaceCount int
OthersCount int
}
// main 程序入口
func main() {
fileName := "E:/Go/code/src/Statistics/mytest.txt"
file, err := os.Open(fileName)
if err != nil {
fmt.Printf("打开文件出错了... err =%v \n", err)
return
}
defer file.Close()
// 定义一个CharCount的实例
var Count CharCount
//创建一个带缓存的reader
reader := bufio.NewReader(file)
// 循环读取文件fileName的内容
for {
str, err := reader.ReadString('\n')
if err == io.EOF {
fmt.Printf("文件内容如读取完成... message = %v \n", err)
break
}
// 遍历前面循环读取到的内容str, 进行统计数量
for _, v := range str {
//fmt.Println(v)
switch {
case v >= 'a' && v <= 'z':
fallthrough
case v >= 'A' && v <= 'Z':
Count.ChCount++
case v == ' ' || v == '\t':
Count.SpaceCount++
case v >= '0' && v <= '9':
Count.NumCount++
default:
Count.OthersCount++
}
}
}
// 输出统计结果来看看是否正确
fmt.Printf("字符数量= %v 数字的个数 = %v 空格的数量是= %v 另外其它字符的个数是= %v",
Count.ChCount, Count.NumCount, Count.SpaceCount, Count.OthersCount)
}
运行结果参考
备注说明
本文部分内容,图片,及视频来源于网络转载, 不以盈利为目的,不构成商业目的使用, 仅用于学习交流...相关版权归原作者所有。如有异议,请联系我 751749090@qq.com [麦特matt]
将在第一时间作出处理.