【原创】Copy源文件,并去掉注释

原创

/**  DelComment.java * *   Copy this file to Copy.java,  *   and get rid of the comments. * *  Author:李文雄。033534026 *  Class :电子政务 * *   Time:04-08-2005 * *  可以把一些//和/*嵌套的注释也能够去掉, *   另外也可以区别出那些是字符串的字符,而不是注释。 *   完成的功能比较好 * */package Class;import java.io.*;

public class DelComment{  private static void outLine(BufferedWriter out,String line ,int n){   // Used to write to the outfile    String s = "第" + n + "行:";  line = s + line;  try{   out.write(line);   out.newLine();  }  catch(IOException e){   e.printStackTrace();  }  } public static void main(String[] args){ //Main Function   int n = 0;   // note the line number    String line = ""; //Used to load the string  String temp = "";    int cmtIndex0 = -1;  //用来标记 字符串引号 "  int cmtIndex4 = -1;     int cmtIndex1 = -1;  //用来标记 注释符号 //   int cmtIndex2 = -1;  //用来标记 注释符号 /* */      boolean isCmt1 = false;  //用来标记 注释符号 //   boolean isCmt2 = false;  //用来标记 注释符号 /* */       try{   BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("DelComment.java")));   //BufferedWriter out = new BufferedWriter(new FileWriter("copy.java"));   BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("copy.java")));      while((temp = in.readLine()) != null){          cmtIndex2 = temp.indexOf("*/");          if((cmtIndex2 != -1) && isCmt2){      isCmt2 = false;      line = temp.substring(cmtIndex2+2);      n++;      outLine(out,line,n);      continue;     }          if(isCmt2) continue;          cmtIndex0  = temp.indexOf("\"");  //出现左引号"的位置          cmtIndex1 = temp.indexOf("//");      cmtIndex2 = temp.indexOf("/*");           cmtIndex4 = temp.indexOf("\"",cmtIndex0+1);  //出现右引号"的位置          if( !((cmtIndex0 < cmtIndex1)  &&   (cmtIndex1 < cmtIndex4))  ){       //  "//" 不是在两个引号之间            if(cmtIndex1 != -1){       if( (cmtIndex1 < cmtIndex2) || (cmtIndex2 == -1))         if(cmtIndex1 > 0){         line = temp.substring(0,cmtIndex1);         n++;         outLine(out,line,n);         continue;        }      }      }      if( !((cmtIndex0 < cmtIndex2)  &&   (cmtIndex2 < cmtIndex4))  ){         //  "/*" 不是在两个引号之间             if(cmtIndex2 != -1){       if(cmtIndex2 > 0){        line = temp.substring(0,cmtIndex2);        n++;        outLine(out,line,n);       }       isCmt2 = true;       continue;      }     }      n++;     outLine(out,temp,n);    }     in.close();    out.close();  }catch(EOFException e){} //catch the exception    catch(IOException e){   e.printStackTrace();   }     catch(Exception e){   e.printStackTrace();  }  //********* Those below just for test of "Get rid of comment"  String str1 = "//   This is just to test about (//)";  String str2 = "/*   This is just to test about (/*  */)  */";  System.out.println(str1);  System.out.println(str2); }}

==>输出结果:

http://blog.csdn.net/horisly/archive/2005/04/08/340159.aspx

时间: 2024-08-04 08:48:19

【原创】Copy源文件,并去掉注释的相关文章

php 清除换行符,清除制表符,去掉注释标记总结

 代码如下 复制代码 <?php  /**   * 压缩html : 清除换行符,清除制表符,去掉注释标记     * @param   $string     * @return  压缩后的$string    * */  function compress_html($string) {        $string = str_replace("rn", '', $string); //清除换行符        $string = str_replace("n&q

php使用正则表达式去掉html中的注释方法_php实例

最近在项目中在需要输出浏览器中的源文件需要去掉html中的注释,在网上看了很多的方案,不过很多的答案都是一样的,并不能解决我的问题,于是就自己写正则表达式,也对正则有了更加深刻的理解. 首先比较基础的是: $a = '<!--ceshi-->ceshi'; $a = preg_replace('#<!--.*-->#' , '' , $a); var_dump($a); 上面的代码会输出ceshi. 但是如果是下面的字符串的话,就不能达到我们希望的效果了 $a = '<!--

旧文重贴:在Csharp当中使用注释(原创)

原创 在Csharp当中使用注释 注意:本文是开心就好原创,并且曾经发表在<视窗世界>中,不欢迎转贴,十分感谢!!!由于软件的复杂性以及不可预知性,所以在程序当中添加注释是一个非常明智的选择,尤其是在团队开发当中,可以使自己的程序更加适于阅读.我们知道Csharp(即C#)作为C++语言的一种扩展版本,继承了C++的注释方法,即以"//"针对一行的注释方法,或者以"/*   */"跨行的注释方法.可以很方便所有开发人员进行使用.例一: /*Author:

php正则去除网页中所有的html,js,css,注释的实现方法_php实例

如下所示: $search = array ("'<script[^>]*?>.*?</script>'si", // 去掉 javascript "'<style[^>]*?>.*?</style>'si", // 去掉 css "'<[/!]*?[^<>]*?>'si", // 去掉 HTML 标记 "'<!--[/!]*?[^<>

php正则去除网页中所有的html,js,css,注释的实现方法

如下所示: $search = array ("'<script[^>]*?>.*?</script>'si", // 去掉 javascript "'<style[^>]*?>.*?</style>'si", // 去掉 css "'<[/!]*?[^<>]*?>'si", // 去掉 HTML 标记 "'<!--[/!]*?[^<>

正则表达式 之过滤注释

使用Java 正则表达式如何过滤掉注释呢?  如上图所示,如何去掉注释呢? Java代码   @Test       public void test_deleteCommen(){           String input="b<!-- step的属性seq是 从1 开始的正整数 -->a";           System.out.println(input.replaceAll("<!--[^<>]*-->", &qu

安全注释和授权在GlassFish和Java EE 5 SDK中的应用

安全性对于企业环境非常重要.在 Java EE 5 / GlassFish 环境中,您可以通过以下几种方式实现安全性: 传输层安全性 (TLS) / 安全套接字层 (SSL) 技术 身份验证 (Authentication) 和授权 (Authorization) 消息层安全性(仅适用于 GlassFish 中的 Web 服务) 本文讨论身份验证和授权.参考资料 [1].[2] 和 [3] 讨论了如何在客户端和服务器端为 Enterprise JavaBeans 和 Web 服务建立 SSL 环

关于Java的注释

对于Java注释我们主要了解两种: // 注释一行 /* ...... */ 注释若干行 但还有第三种,文档注释: /** ...... */ 注释若干行,并写入 javadoc 文档 通常这种注释的多行写法如下: /** * ......... * ......... */ 很多人多忽视了这第三种注释,那么这第三种注释有什么用?javadoc 又是什么东西?下面我们就谈谈. 一. Java 文档和 Javadoc Java 程序员都应该知道使用 JDK 开发,最好的帮助信息就来自 SUN 发布

Java 批量删除html中注释内容的方法_java

其实删除html文本中的注释有很多方法,这里就自己随便写了一个处理方法,权当笔记,有需要的同学可以参考. html文本的注释有几个特点: 1. 成对出现,有开始就一定有结束. 2. 注释标签没有嵌套,注释开始标签(以下称为 <!--)下一个一定是其对应的结束标签(以下称为 -->). 3. 一行中可能有多个注释标签对儿. 4. 注释也可以换行. 大致有以下几种情况: 复制代码 代码如下: <html>  <!--This is a head-->  <head&g