Golang 统计字母,数字,空格等字符个数
代码案例:
package main
import (
"bufio"
"fmt"
"io"
"os"
)
type CharCount struct {
chCount int //英文个数
NumCount int //数字个数
SpaceCount int //空格个数
OtherCount int //其它字符个数
}
func main() {
fileName := "./test1.txt"
file, err := os.Open(fileName)
if err != nil {
fmt.Println("open file err=%v\n", err)
}
defer file.Close()
var count CharCount
//创建一个Reader
reader := bufio.NewReader(file)
//开始循环读取 fileName 文件内容
for {
str, err := reader.ReadString('\n')
for _, v := range str {
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.OtherCount++
}
}
if err == io.EOF { //读取到文件末尾就结束
break
}
}
fmt.Printf("英文的个数为=%v,数字的个数为=%v,空格的个数为=%v,其它的个数为=%v\n",
count.chCount, count.NumCount, count.SpaceCount, count.OtherCount)
}
func CopyFile(dstFileName string, srcFileName string) (written int64, err error) {
//打开srcFileName
srcFile, err := os.Open(srcFileName)
if err != nil {
fmt.Println("open file err=%v\n", err)
}
//通过srcFile,获取到Reader
reader := bufio.NewReader(srcFile)
defer srcFile.Close()
//打开dstFileName
dstFile, err := os.OpenFile(dstFileName, os.O_WRONLY|os.O_CREATE, 0666)
if err != nil {
fmt.Println("open file err=%v\n", err)
}
//通过distFile,获取到Writer
writer := bufio.NewWriter(dstFile)
defer dstFile.Close()
return io.Copy(writer, reader)
}
本文来自博客园,作者:Carver大脸猫,转载请注明原文链接:https://www.cnblogs.com/carver/articles/18456008

浙公网安备 33010602011771号