250_尚硅谷_统计不同类型的字符个数

1.文件编程应用案例1.文件编程应用案例

2.统计英文、数字、空格和其他字符数量代码2.统计英文、数字、空格和其他字符数量代码

package main

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

// 定义一个结构体, 用于保存统计结果
type CharCount struct {
	ChCount    int // 英文字符数量
	NumCount   int // 数字字符数量
	SpaceCount int // 空格字符数量
	OtherCount int // 其他字符数量
}

func main() {
	// todo 思路:
	// 打开一个文件,创建一个Reader
	// 每读一行, 就去统计该行有多少个英文,数字,空格以及其他字符数量
	// 然后将结果保存到一个结构体
	fileName := "G:/task/go_study/250_尚硅谷_统计不同类型的字符个数/files_folder1/abc.txt"

	// 打开文件
	file, err := os.Open(fileName)
	// 判断文件是否打开成功
	if err != nil {
		fmt.Println("open file err = ", err)
		return
	}
	// !关闭文件
	defer file.Close()

	// 定义一个CharCount 实例
	var count CharCount
	// 创建一个Reader
	reader := bufio.NewReader(file)

	// 开始循环读取fileName文件中的内容
	for {
		// 读取一行
		str, err := reader.ReadString('\n')

		// 遍历 str, 进行统计
		for _, v := range str {
			// fmt.Println(v)
			switch {
			case v >= 'a' && v <= 'z':
				fallthrough // 穿透,继续执行下一个case
			case v >= 'A' && v <= 'Z':
				count.ChCount++
			case v == ' ' || v == '\t':
				count.SpaceCount++
			case v >= '0' && v <= '9':
				count.NumCount++

			default:
				count.OtherCount++
			}
		}
		// 判断是否读取到文件末尾
		if err == io.EOF {
			break
		}
	}
	// 输出统计结果
	fmt.Printf("字符总数 = %d, 数字字符 = %d, 空格字符 = %d, 其他字符 = %d\n",
		count.ChCount, count.NumCount, count.SpaceCount, count.OtherCount)
}

3.统计英文、数字、空格和其他字符数量运行结果3.统计英文、数字、空格和其他字符数量运行结果

posted on 2026-02-25 20:12  与太阳肩并肩  阅读(0)  评论(0)    收藏  举报

导航