博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
统计一个含有英文单词的文本文件中的单词个数以及指定单词个数
阅读量:2291 次
发布时间:2019-05-09

本文共 4207 字,大约阅读时间需要 14 分钟。

先列出定义的方法:

1. public int getWordNum(String fileName)

统计一个含有英文单词的文本文件的单词个数。

2. public void getWordNumFile(String formfileName, String word) 

统计指定的文件中含有指定单词的个数。

假设指定单词是 “You”

在程序开发中,经常需要对文本文件中的内容进行读取,如果想从文件中直接读取字符便可以使用字符输入流FileReader。

通过此流可以从关联的文件中读取一个或一组字符。

接下来在 F 盘根目录下新建文件“‘countwords.txt’”并在其中输入以下字符串:(末尾是鼠标定位符)

字符流同样提供了带缓冲区的包装流,其中BufferedReader 用于对字符输入流进行包装,

其中有一个重要的方法readLine(),该方法用于一次性读取一行文本。

注意,例子中定义文件路径时使用里\\。这是因为在Windows中的目录符号为反斜线\,但反斜线\ 在Java中是特殊字符,表示转义符,所以在使用反斜线\ 时,前边应该再添加一个反斜线,即\\。除此之外目录符号也可以用正斜线/来表示。

public class TextProcessor {    public static void main(String[] args) throws IOException {        String fileName = "F:\\countwords.txt";//文件路径        String formfileName = "F:\\countwords.txt";        TextProcessor.getWordNum(fileName); //调用第一个方法        String word = "You";  // 指定单词        TextProcessor.getWordNumFile(formfileName, word); //调用第二个方法    }    // 统计一个含有英文单词的文本文件的单词个数    public static int getWordNum(String fileName) throws IOException {        File file = new File(fileName);        int count = 0; // 计数        if (file.exists()) {            FileReader fr = new FileReader(fileName);  // 读取文件中的字符            //创建一个BufferedReader缓存对象            BufferedReader reader = new BufferedReader(fr);            String line = null;            StringBuffer sbf = new StringBuffer();            while ((line = reader.readLine()) != null) { // 每次读取一行文本,判断是否到文档末尾                sbf.append(line); //读取的追加到StringBuffer缓冲区里                String newString = sbf.toString();  //将sbf里边的内容定义到变量newString里                //在整个字符串中,先讲可能的标点符号换成空格                newString = newString.replace('\'', ' ');//将 单引号 号用空格替换                newString = newString.replace(',', ' ');//将 逗号 用空格替换                newString = newString.replace('.', ' ');//将 句号 用空格替换                //因为上面操作可能会造成一个单词后有多个空格,所以接下来要将字符串按空格(一个或多个)进行划分                String[] strword = newString.split("\\s+");  // 先分割 \\s+ 代表一个或多个空格                System.out.println(Arrays.toString(strword));//输出数组                for (int i = 0; i < strword.length; i++) {                    /*                    Pattern类用于创建一个正则表达式,也可以说创建一个匹配模式                    它的构造方法是私有的,不可以直接创建,                    但可以通过Pattern.complie(String regex)简单工厂方法创建一个正则表达式                    find()对字符串进行匹配                    */                    Pattern pattern = Pattern.compile("[a-zA-Z]*");//匹配一个字母后面接着0或者多个字母(大写或者小写)                    Matcher matcher = pattern.matcher(strword[i]); //   将数组里遍历到的每一个字符串与正则表达式对比。                    if(matcher.find()){ //找到了就计数                        count++;                    }                }                System.out.println(fileName + " 文件中有" + count + "个英文单词");            }            reader.close(); // 关闭流            fr.close();        }        return count;    }    // 统计指定的文件中含有指定单词的个数    public static void getWordNumFile(String formfileName, String word) throws IOException {        File file = new File(formfileName); // 创建文件对象        int count = 0;  // 计数        if (file.exists()) {            FileReader fr = new FileReader(formfileName);  // 读取文件中的字符            BufferedReader reader = new BufferedReader(fr);            String line = null;            StringBuffer sbf = new StringBuffer();            while ((line = reader.readLine()) != null) { // 每次读取一行文本,判断是否到文档末尾                sbf.append(line);                String newString = sbf.toString();                newString = newString.replace('\'', ' ');//将'号用空格替换                newString = newString.replace(',', ' ');//将逗号用空格替换                newString = newString.replace('.', ' ');//将句号用空格替换                String[] strword = newString.split("\\s+");  // 先分割 \\s+ 代表一个或多个空格                for (int i = 0; i < strword.length; i++) {  // 判断里边是否含有指定单词                    if (strword[i].contains(word)) {                        count++;                    }                }            }            System.out.println( " 文件中的" + word + "单词有" + count + "个英文单词");            reader.close();            fr.close();        }    }}

运行结果图:

[You, can, be, as, mad, as, a, mad, dog, at, the, way, things, went, you, could, swear, curse, the, fates, But, when, it, comes, to, the, end, you, have, to, let, go]

F:\countwords.txt 文件中有32个英文单词
 文件中的You单词有1个英文单词

你可能感兴趣的文章
理解MySQL——并行数据库与分区(Partition)
查看>>
Linux查看系统开机时间
查看>>
ssh批量登录并执行命令(python实现)
查看>>
Python模块之---Pexpect
查看>>
Python的Pexpect详解
查看>>
Python模块:optparse 处理命令行参数
查看>>
supervisor安装配置与使用
查看>>
全文索引原理及范例
查看>>
Django运行方式及处理流程总结
查看>>
Android社区链接
查看>>
Android Booting
查看>>
Android4.0之init读取init.ic的过程
查看>>
uboot-2011.12移植到S3C2440(二)——点亮LED灯,the very beginning。
查看>>
LeetCode之Median Of Two Sorted Arrays
查看>>
java.util.Stack类简介
查看>>
求职信结尾处常用语
查看>>
申请原因常用语
查看>>
求职信开头处常用语
查看>>
英文求职信(五)
查看>>
英文求职信(四)
查看>>