天天看点

java 字符串 数字个数_JAVA 统计字符串中中文,英文,数字,空格的个数

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);

}

}