2015-11-29 14:59
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里能数组中的键值来的舒服便捷,这问题等我以后有时间再探索探索吧,虽然这只是偶强迫行为引发的问题而已。
标签:JAVA