package cglib;git
public class StringNumber {
/*也能夠用正則
* Pattern p = Pattern.compile("[a-zA-Z]");
* Pattern p = Pattern.compile("[\\u4e00-\\u9fa5]");
* Pattern p = Pattern.compile("\\d");
Matcher m = p.matcher(str);
while(m.find()){
count++;
}
*
*
*
*
*
*
* */
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "adbs13姿z勢12年概~3!a @x # $率 論zs12 szsgss 1234@#¥說說愛き ,。?!%……&*()——{}【】";
StringNumber countCharacter = new StringNumber();
countCharacter.count(str);
}
public void count(String str){
if (null == str || str.equals("")) {
System.out.println("字符串爲空");
return;
}
int engishCount = 0;
int chineseCount = 0;
int digitCount = 0;
int spaceCount = 0;
int otherCount = 0;
for(int i=0;i<str.length();i++){
if(str.charAt(i)>= '0' && str.charAt(i)<='9'){
digitCount++;
}
else if((str.charAt(i)>= 'a' && str.charAt(i)<='z')||(str.charAt(i)>= 'A' && str.charAt(i)<='Z')){
engishCount++;
} else if (str.charAt(i) ==' ') {
spaceCount ++;
} else if (isChinese(str.charAt(i))) {
chineseCount ++;
} else {
otherCount ++;
}
}
System.out.println("中文:"+chineseCount);
System.out.println("英文:"+engishCount);
System.out.println("數字:"+digitCount);
System.out.println("空格:"+spaceCount);
System.out.println("其餘字符:"+otherCount);
}
/***
* 判斷字符是否爲中文
* @param ch 須要判斷的字符
* @return 中文返回true,非中文返回false
*/
public boolean isChinese(char ch) {
//獲取此字符的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;
}
}
spa
輸出:.net
姿 是中文
勢 是中文
年 是中文
概 是中文
率 是中文
論 是中文
¥ 是中文
說 是中文
說 是中文
愛 是中文
, 是中文
。 是中文
? 是中文
! 是中文
… 是中文
… 是中文
( 是中文
) 是中文
— 是中文
— 是中文
【 是中文
】 是中文
中文:22
英文:15
數字:11
空格:8
其餘字符:13code