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();
}}
}
关于识别汉字,字母,数字和空格,有完全采用正则表达式的写法:点击打开链接
【统计文件中汉字、字母、数字和符号的个数】