统计文件中汉字、字母、数字和符号的个数

1.统计所给例文的汉字,数字,字母,符号的个数,将统计结果降序排列写入生成的的Result.txt文档中。
文档内容格式为:
汉字个数:999
数字个数:888
字母个数:777
......

import java.io.*; import java.util.*; import java.util.regex.Pattern; public class Algorithm2 { public static void main(String[] args) { WriteCount(new File("C:\\Users\\wu\\Desktop\\tt.txt")); } //统计文件中汉字、字母等个数 private static Map Count(File file) { BufferedReader bfr=null; try { bfr=new BufferedReader(new FileReader(file)); String value=https://www.it610.com/article/null; //读取文件的字符 String newValue=""; //保存文件的字符 while((value=https://www.it610.com/article/bfr.readLine())!=null) { newValue=newValue+value; } char[] ch=newValue.toCharArray(); //生成字符数组 int h=0,z=0,f=0,s=0; //统计数字 String regEx ="[\u4e00-\u9fa5]"; //判断是否为汉字的正则表达式 Pattern pat = Pattern.compile(regEx); Map tm = new HashMap(); for(int x=0; x='A'&&c<='Z')||(c>='a'&&c<='z')) { tm.put("字母个数:",++z); continue; } else if(c>='0'&&c<='9') { tm.put("数字个数:",++s); continue; } else if(pat.matcher(String.valueOf(c)).find()) { tm.put("汉字个数:",++h); continue; } else { tm.put("符号个数:",++f); continue; }}//对Value值进行降序排列 List list=new ArrayList(tm.entrySet()); Collections.sort(list,new Comparator() { public int compare(Map.Entry o1,Map.Entry o2) { return o2.getValue().compareTo(o1.getValue()); } }); returntm; }catch (IOException e) { System.out.println("文件读取错误"); } finally { try{ if(bfr!=null) bfr.close(); } catch (IOException e) { System.out.println("文件关闭错误"); } } return null; } //将统计结果输出到文件中 private static void WriteCount(File file) { Map map=Count(file); try { String line=System.getProperty("line.separator"); StringBuffer str=new StringBuffer(); FileWriter fw=new FileWriter("C:\\Users\\wu\\Desktop\\d.txt",false); //覆盖原文件 for(Map.Entry m:map.entrySet()) { str.append(m.getKey()+m.getValue()+"\r\n"); } fw.write(str.toString()); fw.close(); }catch (IOException e) { e.printStackTrace(); }} }


关于识别汉字,字母,数字和空格,有完全采用正则表达式的写法:点击打开链接
【统计文件中汉字、字母、数字和符号的个数】


    推荐阅读