Java实现匹配一个给定输入的字符串中汉字、数字、英文字母、空格数量

时间:2022-10-18 06:26:30
     学习Java依旧在路上,内容越多就要钻的越深入才能记得越深刻理解的越到位,这是我自己最深的感悟。今天利用Java写了一个小程序用来判断指定的字符串中各种各类型的字符包括:汉字、数字、英文字母、空格的数量,本来是很简单的任务,但是中间还是遇到了一些小问题,不得不说,学习的任务任重而道远,下面是我自己的代码,性能什么的都是最直白的实现了一下,肯定还有有很多的不足,希望不吝指教:
import java.util.*;import java.io.*;
public class Exp7 {
public static void main(String[] args)throws Exception{
System.out.println("请输入字符串:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
//show(str);
//Scanner scan=new Scanner(System.in);
//String str=scan.next();
String E1="[\u4e00-\u9fa5]";
String E2="[a-zA-Z]";
String E3="[0-9]";
String E4="[\u0020]";
int countH=0;
int countE=0;
int countB=0;
int countN=0;
char[] arrChar=str.toCharArray();
System.out.println("------------------------------------------------");
System.out.println(arrChar);
String[] arrStr=new String[arrChar.length];
for (int i=0;i<arrChar.length ;i++ )
{
arrStr[i]=String.valueOf(arrChar[i]);
}
for(int j=0; j<arrStr.length; j++){
if(arrStr[j].matches(E1))
{countH++;}
if(arrStr[j].matches(E2))
{countE++;}
//if(arrStr[j]==" ")
if(arrStr[j].matches(E4))
{countB++;}
//if(arrStr[j]>"0" && arrStr[j]<"9")
if(arrStr[j].matches(E3))
{countN++;}
}

System.out.println("汉字的个数"+countH);
System.out.println("字母的个数"+countE);
System.out.println("空格的个数"+countB);
System.out.println("数字的个数"+countN);
}
}

下面是程序的执行结果:

请输入字符串:
编程的工作xiyoucanban你 说 呢123 bushiba
------------------------------------------------
编程的工作xiyoucanban你 说 呢123 bushiba
汉字的个数8
字母的个数18
空格的个数3
数字的个数3