您的位置:首页 > 编程语言 > Java开发

统计字符串中英文字母、汉字、空格、数字及其他字符出现的字数

2015-11-27 09:02 621 查看
package com.aaron;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.util.Map;

import java.util.TreeMap;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class GetCount {

public static void main(String[] args) throws IOException {

BufferedReader strin = new BufferedReader(new InputStreamReader(
System.in));
System.out.print("请输入一个字符串:");
String str = strin.readLine();

int result[] = getCharCount2(str);
System.out.println("空格的个数为:" + result[0]);
System.out.println("数字的个数为:" + result[1]);
System.out.println("汉字的个数为:" + result[2]);
System.out.println("字母的个数为:" + result[3]);
System.out.println("其他字符的个数为:" + result[4]);
// String s = getCharCount(str);
// System.out.println(s);
}

// 统计各种字符出现的次数
public static int[] getCharCount2(String str) {
int[] count = { 0, 0, 0, 0 , 0 };
char[] chs = str.toCharArray();
for (int i = 0; i < chs.length; i++) {

if (Character.isWhitespace(chs[i])) {
count[0]++;
} else if (isNumeric(chs[i])) {
count[1]++;
} else if (isChinese(chs[i])) {
count[2]++;
} else if (isEnglish(chs[i])) {
count[3]++;
} else {
count[4]++;
}
}
return count;
}

//判断字符是不是英文字母

public static boolean isEnglish(char str){

Pattern pattern = Pattern.compile("^[a-zA-Z]+$");

return pattern.matcher(String.valueOf(str)).matches();

}

// 判断该字符是不是数字
public static boolean isNumeric(char str) {

Pattern pattern = Pattern.compile("[0-9]");

return pattern.matcher(String.valueOf(str)).matches();
}

// 判断字符是不是汉字
public static boolean isChinese(char str) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(str);
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) {
return true;
}
return false;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息