统计不同类型的字符个数 | 学习笔记

简介: 快速学习统计不同类型的字符个数

开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程统计不同类型的字符个数】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/626/detail/9733


统计不同类型的字符个数

 

内容介绍

一、文件编程应用实例

二、运行代码查看结果

 

一、文件编程应用实例

1.统计英文、数字、空格和其他字符数量

说明:统计一个文件中含有的英文、数字、空格及其它字符数量。

2.代码实现

package main

import (

"fmt"

"os"

"io"

"buf1o"

//定义一个结构体,用于保存统计结果

type Charcount struct {

chcount int //记录英文个数

Numcount int //记录数字的个数

Spacecount int //记录空格的个数

othercount int //记录其它字符的个数|

func main(){

//思路:打开一个文件,创建一个 Reader

//每读取一行,就去统计该行有多少个英文、数字、空格和其他字符

//然后将结果保存到一个结构体

fileName ="e:/abc.txt"

file, err := os.Open(fileName)

if err != nil {

fmt.Printf("open file 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{ //读到文件末尾就退出

break

//遍历 str ,进行统计

for _, v := range str {

fmt.Print1n(v)//测试能否打印出来

运行

D:\go project\src\go_code\chapter14\filedemo05\exe07>go run main.go

image.png

D:\go project\src\go_code\chapter14\filedemo05\exe07>

可以看到已经统计出来,数组将数字打出来。

switch v {

case v >=“a'&& v<='z’:

count.Chcount++

case v >='A'&& v<='Z':

count.Chcount++ )

(可以将上面部分做穿透处理,如下)

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.Othercount++

每读一行处理一次,最终将统计结果输出

//输出统计的结果查看是否正确

fmt.Printf(“字符的个数为=%v 数字的个数为=%v 空格的个数为=%v 其它字符个数=%v",

count.chcount, count.Numcount,count.Spacecount,count.Othercount)

 

二、运行代码查看结果

提示出现 Error.Error.illegal value for'line'

case v =='  ' || v =='\t’

case v >='0'&& v <='9’

定位发现这两处出现问题,加上:就可以将问题解决

另一处错误是 mismatched types book and rune 不匹配 bool 类型,返回为 bool 类型,但是 v 不是 bool 类型,将switch v 中的 v 删除即可,不用 v 匹配直接将 swich 当做一组分支判断

运行

D:\go project\src\go_code\chapter14\filedemo05\exe07>go run main.go

字符的个数为=13 数字的个数为=7空格各数为=2 其他字符个数=4

D:\go project\src\go_code\chapter14\filedemo05\exe07>

打开原文件比对结果是否正确

原文件内容:

ab123 89popj\r\n

yy89 hello

完全正确(\r\n 不显示字符)

//为了兼容中文字符,可以将 str 转成[]run

str=[]run(str)

相关文章
|
6月前
|
Java
java字符串练习题4、统计一行字符串中所有的字符类型数量
java字符串练习题4、统计一行字符串中所有的字符类型数量
65 0
|
6月前
输入一个字符串,统计其中字符A的数量并且输出,输入共有一行,为一个不带空格的字符串(其中字符数不超过100),输出一行,包含一个整数,为输入字符串中的A的数量
输入一个字符串,统计其中字符A的数量并且输出,输入共有一行,为一个不带空格的字符串(其中字符数不超过100),输出一行,包含一个整数,为输入字符串中的A的数量
|
Shell Perl
2、计算文档每行出现的数字个数,并计算整个文档的数字总数
2、计算文档每行出现的数字个数,并计算整个文档的数字总数
85 1
|
Python
统计字符串中不同字符个数问题
统计字符串中不同字符个数问题
128 0
|
C语言 C++
1684. 统计一致字符串的数目
给你一个由不同字符组成的字符串 allowed 和一个字符串数组 words 。如果一个字符串的每一个字符都在 allowed 中,就称这个字符串是 一致字符串 。 请你返回 words 数组中 一致字符串 的数目。
97 0
统计字符串中元素的个数(多种方法)
统计字符串中元素的个数(多种方法)
192 0
统计字符串中元素的个数(多种方法)
|
Serverless C++
C/C++编程题之字符个数统计
C/C++编程题之字符个数统计
037.统计文件的字符数
037.统计文件的字符数
104 0
|
机器学习/深度学习 算法 Java
四种方式统计二进制表示中 1 的个数
四种方式统计二进制表示中 1 的个数