packagecom.example.test;public classCountCharacter {
private int chCharacter = 0;
private int enCharacter = 0;
private int spaceCharacter = 0;
private int numberCharacter = 0;
private int otherCharacter = 0;
public voidcount(String str) {if (null == str || str.equals("")) {
System.out.println("字符串为空");return;
}for (int i = 0; i < str.length(); i++) {char tmp =str.charAt(i);if ((tmp >= 'A' && tmp <= 'Z') || (tmp >= 'a' && tmp <= 'z')) {
enCharacter++;
}else if ((tmp >= '0') && (tmp <= '9')) {
numberCharacter++;
}else if (tmp ==' ') {
spaceCharacter++;
}else if(isChinese(tmp)) {
chCharacter++;
}else{
otherCharacter++;
}
}
System.out.println("字符串:" + str + "");
System.out.println("中文字符有:" +chCharacter);
System.out.println("英文字符有:" +enCharacter);
System.out.println("数字有:" +numberCharacter);
System.out.println("空格有:" +spaceCharacter);
System.out.println("其他字符有:" +otherCharacter);
}
private boolean isChinese(charch) {//获取此字符的UniCodeBlock
Character.UnicodeBlock ub =Character.UnicodeBlock.of(ch);//GENERAL_PUNCTUATION 判断中文的“号//CJK_SYMBOLS_AND_PUNCTUATION 判断中文的。号//HALFWIDTH_AND_FULLWIDTH_FORMS 判断中文的,号
if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub ==Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A || ub ==Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub ==Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS|| ub ==Character.UnicodeBlock.GENERAL_PUNCTUATION) {
System.out.println(ch+ " 是中文");return true;
}return false;
}public static voidmain(String[] args) {
String str= "adbs13姿z势12年概~3!a @x # $率 论zs12 szsgss 1234@#¥說說愛き ,。?!%……&*()——{}【】";
CountCharacter countCharacter= newCountCharacter();
countCharacter.count(str);
}
}