Golang实现统计文件内容的字符,数字,符号数量

废话不多说,直入主题
今天学习了通过***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)
}

运行结果参考

源文件 vs 运行结果

备注说明

本文部分内容,图片,及视频来源于网络转载, 不以盈利为目的,不构成商业目的使用, 仅用于学习交流…相关版权归原作者所有。如有异议,请联系我 751749090@qq.com [麦特matt]
将在第一时间作出处理.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值