import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.regex.Pattern;
/**
* ①//号没有处理
* ②还有其它符号没有处理
* ③还有其它判断,没有判断(如:文件不存在等)
* ④注释删除,请看我博客的其它文章
* 描述:把Java文件的每个单词
* 每个标点符号单词显示出来
*/
public class SplitFile {
public static final String path = "e://11.java";
public static void main(String[] args) throws Exception{
inputFile();
}
// 引入文件
public static void inputFile() throws Exception{
File file = new File(path);
BufferedReader br = new BufferedReader(new FileReader(file.getAbsolutePath()));
String str = null;
StringBuffer sb = new StringBuffer();
StringBuffer stringBuffer = new StringBuffer();
while((str = br.readLine()) != null){
if(str.trim().length() != 0){
int len = str.trim().length();
boolean flag = true;
stringBuffer = splitString(str.trim(),sb,len,flag);
}
}
System.out.println(stringBuffer.toString());
}
// 拆分分类
public static StringBuffer splitString(String str,StringBuffer sb,int len,boolean flag){
int index = 0;
// 总的处理
if (Pattern.compile("[ :.;{}()/////"=,]").matcher(str).find()
|| (str.indexOf("[") != -1)
|| (str.indexOf("]") != -1)
|| (str.indexOf("!=") != -1)) {
// 处理空格
if ((index = str.indexOf(" ")) != -1) {
String firstStr = str.substring(0, index);
if(index == 0){
firstStr = str.substring(0,1);
sb.append(firstStr);
sb.append("/n");
}else{
int lenFirst = firstStr.length();
splitString(firstStr,sb,lenFirst,flag);
}
str = str.substring(index + 1, len);
int lenLast = str.length();
splitString(str,sb,lenLast,flag);
}
// 处理引号
else if ((index = str.indexOf("/"")) != -1) {
String firstStr = str.substring(0, index);
if(index == 0){
firstStr = str.substring(0,1);
sb.append(firstStr);
sb.append("/n");
}else{
int lenFirst = firstStr.length();
splitString(firstStr,sb,lenFirst,flag);
if((str.indexOf("/"")) != -1){
flag=false;
} else {
flag = true;
}
}
if(flag==true){
str = str.substring(index + 1, len);
}else{
str = str.substring(index,len);
flag = true;
}
int lenLast = str.length();
splitString(str,sb,lenLast,flag);
}
// 处理冒号
else if ((index = str.indexOf(":")) != -1) {
String firstStr = str.substring(0, index);
str = str.substring(index + 1, len);
int lenLast = str.length();
int lenFirst = firstStr.length();
splitString(firstStr,sb,lenFirst,flag);
sb.append(":");
sb.append("/n");
splitString(str,sb,lenLast,flag);
}
// 处理点号
else if ((index = str.indexOf(".")) != -1) {
String firstStr = str.substring(0, index);
str = str.substring(index + 1, len);
int lenLast = str.length();
int lenFirst = firstStr.length();
splitString(firstStr,sb,lenFirst,flag);
sb.append(".");
sb.append("/n");
splitString(str,sb,lenLast,flag);
}
// 处理分号
else if ((index = str.indexOf(";")) != -1) {
String firstStr = str.substring(0, index);
str = str.substring(index + 1, len);
int lenFirst = firstStr.length();
splitString(firstStr,sb,lenFirst,flag);
sb.append(";");
sb.append("/n");
}
// 处理大括号
else if ((index = str.indexOf("}")) != -1) {
String firstStr = str.substring(0, index);
str = str.substring(index + 1, len);
int lenLast = str.length();
int lenFirst = firstStr.length();
splitString(firstStr,sb,lenFirst,flag);
sb.append("}");
sb.append("/n");
splitString(str,sb,lenLast,flag);
}
// 处理大括号
else if ((index = str.indexOf("{")) != -1) {
String firstStr = str.substring(0, index);
str = str.substring(index + 1, len);
int lenLast = str.length();
int lenFirst = firstStr.length();
splitString(firstStr,sb,lenFirst,flag);
sb.append("{");
sb.append("/n");
splitString(str,sb,lenLast,flag);
}
// 处理小括号
else if ((index = str.indexOf("(")) != -1) {
String firstStr = str.substring(0, index);
str = str.substring(index + 1, len);
int lenLast = str.length();
int lenFirst = firstStr.length();
splitString(firstStr,sb,lenFirst,flag);
sb.append("(");
sb.append("/n");
splitString(str,sb,lenLast,flag);
}
// 处理小括号
else if ((index = str.indexOf(")")) != -1) {
String firstStr = str.substring(0, index);
str = str.substring(index + 1, len);
int lenLast = str.length();
int lenFirst = firstStr.length();
splitString(firstStr,sb,lenFirst,flag);
sb.append(")");
sb.append("/n");
splitString(str,sb,lenLast,flag);
}
// 处理中括号
else if ((index = str.indexOf("[")) != -1) {
String firstStr = str.substring(0, index);
str = str.substring(index + 1, len);
int lenLast = str.length();
int lenFirst = firstStr.length();
splitString(firstStr,sb,lenFirst,flag);
sb.append("[");
sb.append("/n");
splitString(str,sb,lenLast,flag);
}
// 处理中括号
else if ((index = str.indexOf("]")) != -1) {
String firstStr = str.substring(0, index);
str = str.substring(index + 1, len);
int lenLast = str.length();
int lenFirst = firstStr.length();
splitString(firstStr,sb,lenFirst,flag);
sb.append("]");
sb.append("/n");
splitString(str,sb,lenLast,flag);
}
// 处理/号
else if ((index = str.indexOf("////")) != -1) {
String firstStr = str.substring(0, index);
str = str.substring(index + 1, len);
int lenLast = str.length();
if(index == 0){
firstStr = str.substring(0,1);
sb.append(firstStr);
sb.append("/n");
}else{
int lenFirst = firstStr.length();
splitString(firstStr,sb,lenFirst,flag);
}
splitString(str,sb,lenLast,flag);
}
// 处理=号
else if((index = str.indexOf("=")) != -1){
String firstStr = str.substring(0, index);
str = str.substring(index + 1, len);
int lenLast = str.length();
int lenFirst = firstStr.length();
splitString(firstStr,sb,lenFirst,flag);
sb.append("=");
sb.append("/n");
splitString(str,sb,lenLast,flag);
}
// 处理!=号
else if((index = str.indexOf("!=")) != -1){
String firstStr = str.substring(0, index);
str = str.substring(index + 1, len);
int lenLast = str.length();
int lenFirst = firstStr.length();
splitString(firstStr,sb,lenFirst,flag);
sb.append("!=");
sb.append("/n");
splitString(str,sb,lenLast,flag);
}
// 处理,号
else if((index = str.indexOf(",")) != -1){
String firstStr = str.substring(0, index);
str = str.substring(index + 1, len);
int lenLast = str.length();
int lenFirst = firstStr.length();
splitString(firstStr,sb,lenFirst,flag);
sb.append(",");
sb.append("/n");
splitString(str,sb,lenLast,flag);
}
return sb;
} else {
if(str != null){
sb.append(str);
sb.append('/n');
}
return sb;
}
}
}
本文介绍了一个Java程序,该程序能够读取指定路径下的Java源文件,并将文件中的每个单词及标点符号单独拆分和显示。通过正则表达式匹配和字符串操作实现了对各种Java语法元素的有效处理。

2073

被折叠的 条评论
为什么被折叠?



