zoukankan      html  css  js  c++  java
  • 对文件的内容进行统计字母数字中文,并且显示每个结果

    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('
    ')
    		//开始遍历读取的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)
    }
    

      

  • 相关阅读:
    简单对拍
    搜索感想
    L1434滑雪
    记忆化搜索
    L3956棋盘
    USACO 数字三角形
    枚举顺序
    蓝桥计算
    用户态和内核态IO过程
    Mybatis的结果集中的Do要不要有setter
  • 原文地址:https://www.cnblogs.com/egrep/p/10402246.html
Copyright © 2011-2022 走看看