对文件的内容进行统计字母数字中文,并且显示每个结果

本文介绍了一个使用Go语言编写的程序,该程序能够读取指定文件并统计其中的英文字符、数字、中文字符以及其他类型字符的数量。通过遍历文件中的每一个字节,程序能够准确地区分不同类型的字符并进行计数。
package main

import (
	"bufio"
	"fmt"
	"io"
	"log"
	"os"
)

type Count struct {
	Strcount int
	Numcount int
	Other    int
	China    int
}

func main() {
	filename := "./abc.txt"
	file, err := os.Open(filename)
	if err != nil {
		log.Fatal(err)
	}
	var c Count
	//返回带缓冲的reader
	readre := bufio.NewReader(file)
	for {
		//// ReadString读取,直到输入中第一次出现delim,
		//返回一个字符串,该字符串包含分隔符之前的数据,并包含分隔符。
		//如果ReadString在找到分隔符之前遇到错误,
		//它返回在错误之前读取的数据和错误本身(通常是io.EOF)。
		// ReadString返回err != nil,当且仅当返回的数据没有结束
		// delim 意思就是分割
		str, err := readre.ReadString('\n')
		//开始遍历读取的str数据 str底层是byte字节数组
		//我们要判断是不是中文 所以这里转成 rune UTF-8编码 大于255肯定是中文
		for _, v := range []rune(str) {
			switch {
			case v >= 'a' && v <= 'z':
				fallthrough
			case v >= 'A' && v <= 'Z':
				c.Strcount++
			case v >= '0' && v <= '9':
				c.Numcount++
			case v > 255:
				c.China++
			default:
				c.Other++
			}
		}
		//文件读取结束 跳出循环
		if err == io.EOF {
			break
		}
		if err != nil {
			log.Fatal(err)
		}
	}
	fmt.Println("c.Numcoun=", c.Numcount)
	fmt.Println("c.Strcount=", c.Strcount)
	fmt.Println("c.China=", c.China)
	fmt.Println("c.Other=", c.Other)
}

  

转载于:https://www.cnblogs.com/egrep/p/10402246.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值