使用正则表达式进行单词统计

 1 import java.io.BufferedReader;
 2 import java.io.File;
 3 import java.io.FileNotFoundException;
 4 import java.io.FileReader;
 5 import java.io.IOException;
 6
 7 public class CodeCounter {
 8
 9     static long normalLines = 0;
10     static long commentLines = 0;
11     static long whiteLines = 0;
12
13     public static void main(String[] args) {
14         File f = new File("D:\\share\\JavaProjects\\TankWar1.9.11\\src");
15         File[] codeFiles = f.listFiles();
16         for(File child : codeFiles){
17             if(child.getName().matches(".*\\.java$")) {
18                 parse(child);
19             }
20         }
21
22         System.out.println("normalLines:" + normalLines);
23         System.out.println("commentLines:" + commentLines);
24         System.out.println("whiteLines:" + whiteLines);
25
26     }
27
28     private static void parse(File f) {
29         BufferedReader br = null;
30         boolean comment = false;
31         try {
32             br = new BufferedReader(new FileReader(f));
33             String line = "";
34             while((line = br.readLine()) != null) {
35                 line = line.trim();
36                 if(line.matches("^[\\s&&[^\\n]]*$")) {
37                     whiteLines ++;
38                 } else if (line.startsWith("/*") && !line.endsWith("*/")) {
39                     commentLines ++;
40                     comment = true;
41                 } else if (line.startsWith("/*") && line.endsWith("*/")) {
42                     commentLines ++;
43                 } else if (true == comment) {
44                     commentLines ++;
45                     if(line.endsWith("*/")) {
46                         comment = false;
47                     }
48                 } else if (line.startsWith("//")) {
49                     commentLines ++;
50                 } else {
51                     normalLines ++;
52                 }
53             }
54         } catch (FileNotFoundException e) {
55             e.printStackTrace();
56         } catch (IOException e) {
57             e.printStackTrace();
58         } finally {
59             if(br != null) {
60                 try {
61                     br.close();
62                     br = null;
63                 } catch (IOException e) {
64                     e.printStackTrace();
65                 }
66             }
67         }
68     }
69
70 }

原文地址:https://www.cnblogs.com/XiDaPuBen/p/8678754.html

时间: 2024-10-18 15:25:29

使用正则表达式进行单词统计的相关文章

运行Hadoop自带的wordcount单词统计程序

0.前言 前面一篇<Hadoop初体验:快速搭建Hadoop伪分布式环境>搭建了一个Hadoop的环境,现在就使用Hadoop自带的wordcount程序来做单词统计的案例. 1.使用示例程序实现单词统计 (1)wordcount程序 wordcount程序在hadoop的share目录下,如下: [[email protected] mapreduce]# pwd /usr/local/hadoop/share/hadoop/mapreduce [[email protected] mapr

Exercise: Maps (单词统计)

A Tour of Go Exercise: Maps https://tour.golang.org/moretypes/23 WordCount (单词统计) 是一个很经典的小程序了,在很多编程入门教程中都会出现. 这道题比较简单,但也有一些知识点值得一提. 上面这个答案我是参考了网上别人写的.但在参考别人之前我也自己解题了,其中,唯一不同之处是这一句: m[word]++ 我本来写的是: _, ok := m[word] if ok { m[word]++ } else { m[word]

《C++ Primer》P314中使用insert重写单词统计程序的扩展

编写程序统计并输出所读入的单词出现的次数 想与习题10-1相结合,也就是先输入几组 map<string, int>类型,存入vector中. 再输入单词word,如果已经存在则在key对应的value+1 如果不存在,则插入并使得其value为1. 之前的问题是->输入了一次之后,再要输入单词word,读不进.(呵呵 果然小白) 看到11章之后,知道要用语句cin.clear;使得输入流重新有效. 再然后 重新熟悉了iterator对map的操作. #include <iostr

一步一步写算法(之单词统计)

原文:一步一步写算法(之单词统计) [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 在面试环节中,有一道题目也是考官们中意的一道题目:如果统计一段由字符和和空格组成的字符串中有多少个单词? 其实,之所以问这个题目,考官的目的就是想了解一下你对状态机了解多少. (1) 题目分析 从题目上看,如果对一个字符串进行处理,那么可以有下面几种情形:初始状态,字符状态,空格状态,结束状态.那么这几种状态之间应该怎么迁移呢? 初始状态: 如果输入符号是

第三次作业(字符,单词统计)

题目要求:从文件中读取字符,然后统计字符的数目,和单词的数目. 首先打开一个文件,对里面存的东西进行统计,刚开始判断是否为单词的组成部分: 代码如下: FILE *fp;//文件指针 char c; //文件字符读取存储 fp = fopen("D:\\a\\a.txt", "r"); if (fp == NULL) { printf("文件打开失败"); return 0; } while (feof(fp) != 1) { c = fgetc

MapReduce 单词统计案例编程

MapReduce 单词统计案例编程 一.在Linux环境安装Eclipse软件 1.   解压tar包 下载安装包eclipse-jee-kepler-SR1-linux-gtk-x86_64.tar.gz到/opt/software目录下. 解压到/opt/tools目录下: [[email protected] tools]$ tar -zxf /opt/sofeware/eclipse-jee-kepler-SR1-linux-gtk-x86_64.tar.gz -C /opt/tool

hive学习之WordCount单词统计

看hive目录下就可以了,程序在hdfs里创建一个hive的大文件夹,相当于数据库吧.上面就是一个完整的利用hive来做单词统计,其中的优劣也能看出一点.

华为历年试题(单词统计3)

单词统计 题目描述: 输入一段英文文本,用程序统计出现频率最高和最低的两个单词; 英文文本中仅出现这四类字符:空格( ).英文逗号(,).英文句号(.).英文大小写字母(a-z.A-Z) 单词之间的分隔符仅考虑这三种:空格( ).英文逗号(,).英文句号(.); 仅大小写不同的单词算同一个单词: 如果两个单词出现次数相同,则在文本中首次出现的单词优先返回. 返回的单词统一用小写字母返回 例如: 输入字符串“Hello world, i said hello world to the world”

手动实现一个单词统计MapReduce程序与过程原理分析

[toc] 手动实现一个单词统计MapReduce程序与过程原理分析 前言 我们知道,在搭建好hadoop环境后,可以运行wordcount程序来体验一下hadoop的功能,该程序在hadoop目录下的share/hadoop/mapreduce目录中,通过下面的命令: yarn jar $HADOOP_HOME/share/hadoop/mapreducehadoop-mapreduce-examples-2.6.4.jar wordcount inputPath outPath 即可对输入文