阿萌的程序小屋

萌物控重度患者与您一起畅游技术与梦想的世界

JAVA自学笔记:统计字符串中汉字、字母、数字及其他字符的个数

阿萌这次的课题是,利用JAVA统计一段字符串中,汉子、字母、数字、空格、以及其他字符的各类字符的个数,并计算其总个数。

简单原理就是:
将输入的字符串,利用String.split()分割字符串存入一个String类型数组遍历数组,依次利用是String.matches()方法,利用正则表达式来判定单个字符是否符合所规定的类型,如果符合则对该类型的计数变量自加1。

就是这样,另外对应的正则表达式为:
中文:[\u4e00-\u9fa5]
英文:[a-zA-Z]
数字:[0-9]

下面看程序代码:


import java.util.Scanner;
public class Test012 {
    public static void main(String args[]){
        Scanner reader=new Scanner(System.in);
        String text=reader.nextLine();
        System.out.println(text);
        String[] t=text.split("");
        int All=t.length,Chs=0,Eng=0,Space=0,Num=0,Other=0;
        String CH = "[\u4e00-\u9fa5]";// 中文  
        String EN= "[a-zA-Z]";// 英文  
        String NM = "[0-9]";// 数字  
        for(int i=0;i<All;i++){
            if(t[i].matches(CH)){
                Chs++;
            }else if(t[i].matches(EN)){
                Eng++;
            }else if(t[i].contains(" ")){
                Space++;
            }else if(t[i].matches(NM)){
                Num++;
            }else{
                Other++;
            }
        }
        System.out.printf("字符总数为:%d\n中文字数为:%d\n英文字数为:%d\n空格个数为:%d\n数字个数为:%d\n其他字符为:%d\n",All,Chs,Eng,Space,Num,Other);
    }
}

控制台结果:
输入:abcdefg 一二三四 12345678.。
输出结果:
字符总数为:22
中文字数为:4
英文字数为:7
空格个数为:2
数字个数为:8
其他字符为:1


后记(遗留问题):

1、在检测空格的时候,利用t[i]==” ”居然检测不出空格,恕我知识尚浅,暂时无法找到问题所在,只好暂时利用String.contains(" ")方法判断,这问题之后偶再详细查找。

2、个人问题,本来是准备写在方法里的,结果寻找了各种方式,发现只能通过返回数组、list、传递新对象、定义静态变量等方法来在方法外使用方法内的变量,无论哪种方法都感觉没有PHP里能数组中的键值来的舒服便捷,这问题等我以后有时间再探索探索吧,虽然这只是偶强迫行为引发的问题而已。

如有朋友感觉我的博文或代码有问题,愿能给予我宝贵的意见!Thanks

另注:转载请随意,但请带上本文地址,万分感谢。

http://www.wangmengyu.cn/?p=707

这就是真的真的是传说中的公告牌的说~~
暂且努力发展中~~

性别:男  年龄:20岁
现居:江苏  南京  浦口区
标语:萌即是一切