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

利用正则表达式实现统计代码中的注释行、空行、以及代码行的数量。

2013-08-18 15:43 821 查看
import java.io.BufferedReader;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class ConvertString1 {

static int normalLines = 0;

static int commentLines = 0;

static int whiteLines = 0;

public static void main(String[] args) {

// 读取文件中的.java 文件

File f = new File(

"D:\\作业\\范例\\图书进存销系统\\book\\src\\org\\crazyit\\book\\ui");

File[] files = f.listFiles();

for (File file : files) {

// 正则表达式匹配

String s = file.toString();

Pattern p = Pattern.compile(".*\\.java$");

Matcher m = p.matcher(s);

while (m.find()) {

parse(s);

}

}

// 输出统计结果

System.out.println("normalLines=" + normalLines + "," + "commentLines="

+ commentLines + "," + "whiteLines=" + whiteLines);

}

private static void parse(String name) {

BufferedReader br = null;

String str = "";

boolean flag = false;

try {

br = new BufferedReader(new FileReader(name));

while ((str = br.readLine()) != null) {

str=str.trim();

// 判断是否为空行

if (str.matches("^[\\s&&[^\\n]]*$")) {

whiteLines++;

// 判断是否注释为/*……*/

} else if (str.startsWith("/*") && (!str.endsWith("*/"))) {

commentLines++;

flag = true;

}

// 判断是否注释行为"//"开头

else if (str.startsWith("//")) {

commentLines++;

}

else if (true==flag) {

commentLines++;

if (str.endsWith("*/")) {

flag=false;

}

}else {

// 普通代码行

normalLines++;

}

}

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

if (br != null) {

try {

br.close();

br = null;

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

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