java文件处理,显示每个单词和符号

本文介绍了一个Java程序,该程序能够读取指定路径下的Java源文件,并将文件中的每个单词及标点符号单独拆分和显示。通过正则表达式匹配和字符串操作实现了对各种Java语法元素的有效处理。

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;
  }
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值