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 运行结果

备注说明

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

你可能感兴趣的:(Golang实现统计文件内容的字符,数字,符号数量)