package main
import (
	"fmt"
	"regexp"
)
// 练习四: 统计一个字符串的字母,数字,空格,其他字符个数
func statisticalCharacterNumber(s string) {
	// 示例字符串
	// var s = "MemTotal: 100111 KB"
	// 创建正则匹配字母、数字、空格
	// \d 匹配数。 MustCompile必须
	var rNum = regexp.MustCompile(`\d`)
	// [a-zA-Z] 匹配大小写字母
	var rCharacter = regexp.MustCompile("[a-zA-Z]")
	// 匹配空格
	var rBlank = regexp.MustCompile(" ")
	// 定义其它字符变量
	var specialcharacter int
	// 获取数字的个数
	num := len(rNum.FindAllStringSubmatch(s,-1))
	// 获取字母的个数
	character := len(rCharacter.FindAllStringSubmatch(s,-1))
	// 获取空格的个数
	blank := len(rBlank.FindAllStringSubmatch(s,-1))
	fmt.Printf("数字个数%d\n",num)
	fmt.Printf("字母个数%d\n",character)
	fmt.Printf("空格个数%d\n",blank)
	//其它字符
	specialcharacter = len(s) - num - character - blank
	fmt.Printf("其它字符个数%d\n",specialcharacter)
	fmt.Printf("总个数%d\n",len(s))
}
func main() {
	statisticalCharacterNumber("MemTotal: 100111 KB")
}
  
  