`
lt200819
  • 浏览: 181796 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

清除C/C++/JAVA中的注释

阅读更多

 

import java.io.FileInputStream;
import java.io.PrintStream;
import java.util.Scanner;

/* ********\\\\\\\\\\/////////********
 this is test program
 this is test program
 this is test program
 */
public class Solution {
	private static final char MARK = '"';

	private static final char SLASH = '/';

	private static final char BACKSLASH = '\\';

	private static final char STAR = '*';

	private static final char NEWLINE = '\n';

	private static final int TYPE_MARK = 1;

	private static final int TYPE_SLASH = 2;

	private static final int TYPE_BACKSLASH = 3;

	private static final int TYPE_STAR = 4;

	private static final int TYPE_DSLASH = 5;

	public static String removeComment(String s) {
		int preType = 0;
		int mark = -1, cur = -1, token = -1;
		char[] input = s.toCharArray();
		for (cur = 0; cur < input.length; cur++) {
			if (input[cur] == MARK) {
				if (preType == TYPE_BACKSLASH)
					continue;
				if (mark > 0) {
					mark = -1;
				} else {
					mark = cur;
				}
				preType = TYPE_MARK;
			} else if (input[cur] == SLASH) {
				if (mark > 0)
					continue;
				if (preType == TYPE_STAR) {
					input = del(input, token, cur);
					cur = token - 1;
					preType = 0;
				} else if (preType == TYPE_SLASH) {
					token = cur - 1;
					preType = TYPE_DSLASH;
				} else {
					preType = TYPE_SLASH;
				}
			} else if (input[cur] == BACKSLASH) {
				preType = TYPE_BACKSLASH;
			} else if (input[cur] == STAR) {
				if (mark > 0)
					continue;
				if (preType == TYPE_SLASH) {
					token = cur - 1;
				}
				preType = TYPE_STAR;
			} else if (input[cur] == NEWLINE) {
				if (preType == TYPE_DSLASH) {
					input = del(input, token, cur - 1);
					cur = token - 1;
					preType = 0;
				}
			}

		}
		return new String(input);
	}

	public static char[] del(char[] _target, int _start, int _end) {
		char[] tmp = new char[_target.length - (_end - _start + 1)];
		System.arraycopy(_target, 0, tmp, 0, _start);
		System.arraycopy(_target, _end + 1, tmp, _start, _target.length - _end
				- 1);
		return tmp;
	}

	public static void main(String[] args) {
		try {
			System.setIn(new FileInputStream("/Users/litong/Desktop/a.in"));
			System.setOut(new PrintStream("/Users/litong/Desktop/a.out"));
			Scanner sc = new Scanner(System.in);
			StringBuilder sb = new StringBuilder();
			while (sc.hasNext()) {
				sb.append(sc.nextLine());
			}
			System.out.println(removeComment(sb.toString()));
		} catch (Exception e) {

		}
	}

}

 

0
3
分享到:
评论

相关推荐

    C/C++/Java 源代码注释清除工具

    该工具是用于清除C/C++/Java中的// 或/**/的注释。可以对文件夹操作。处理速度非常快。

    源码清除注释工具,移除特定文件工具

    清除源代码注释、替换源代码注释:包括各种文本文件例如c,c++,java等各种源码。删除指定后缀名的文件。

    JAVA上百实例源码以及开源项目

     Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...

    JAVA上百实例源码以及开源项目源代码

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    asp.net某店POS积分管理系统-清除履历表、日志表、月购买额(源代码+论文).rar

    资源内容:项目全套源码+完整文档 ...后台框架代码:java/c/c++/php/VB/lun/Andorid/Python 开发环境:idea 数据库:MySql(建议用 5.7,8.0 有时候会有坑) 部署环境:Tomcat(建议用 7.x 或者 8.x b版本),maven 

    Thinking in Java简体中文(全)

    附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 寻找瓶颈 D.2.1 安插自己的测试代码 D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 性能评测的技巧 D.3 提速方法 D.3.1 常规手段 D.3.2 依赖语言的方法 D.3.3 特殊...

    java联想(中文)

    附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 寻找瓶颈 D.2.1 安插自己的测试代码 D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 性能评测的技巧 D.3 提速方法 D.3.1 常规手段 D.3.2 依赖语言的方法 D.3.3 特殊...

    Thinking in Java 中文第四版+习题答案

    附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 寻找瓶颈 D.2.1 安插自己的测试代码 D.2.2 JDK性能评测 D.2.3 特殊工具 D.2.4 性能评测的技巧 D.3 提速方法 D.3.1 常规手段 D.3.2 依赖语言的方法 D.3.3 特殊情况 D...

    Java编程思想(完整版)

    但在Java中,设计者觉得这种杂合并不象在C++里那么重要。杂合语言允许采用多种编程风格;之所以说C++是一种杂合语言,是因为它支持与C语言的向后兼容能力。由于C++是C的一个超集,所以包含的许多特性都是后者不具备...

    [java]读书笔记整理:一切都是对象

    注意,尽管一下代码在C和C++中是合法的,但是在java中却不能这样书写: { int x=12; { int x=100; } } 编译器将会报告变量x已经定义过。所以,在C和C++里将一个较大作用域的变量“隐藏”起来的做法,在...

    java 编程入门思考

    附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 寻找瓶颈 D.2.1 安插自己的测试代码 D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 性能评测的技巧 D.3 提速方法 D.3.1 常规手段 D.3.2 依赖语言的方法 D.3.3 特殊...

    Java初学者入门教学

    附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 寻找瓶颈 D.2.1 安插自己的测试代码 D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 性能评测的技巧 D.3 提速方法 D.3.1 常规手段 D.3.2 依赖语言的方法 D.3.3 特殊...

    Visual C++ 2005入门经典--源代码及课后练习答案

    Ivor Horton还著有Beginning Visual C++ 6、Beginning C Programming和Beginning Java 2等多部入门级好书。 目录 封面 -18 前言 -14 目录 -9 第1章 使用Visual C++ 2005编程 1 1.1 .NET Framework 1 1.2 CLR 2...

    JAVA_Thinking in Java

    附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 寻找瓶颈 D.2.1 安插自己的测试代码 D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 性能评测的技巧 D.3 提速方法 D.3.1 常规手段 D.3.2 依赖语言的方法 D.3.3 特殊...

    Thinking in java(中文)

    &lt;br&gt;第2章 一切都是对象 2.1 用句柄操纵对象 2.2 必须创建所有对象 2.2.1 保存在什么地方 2.2.2 特殊情况:主类型 2.2.3 Java中的数组 2.3 绝对不要清除对象 2.3.1 作用域 2.3.2 对象的...

    超强vim配置文件

    1 按F5可以直接编译并执行C C++ java代码以及执行shell脚本 按“F8”可进行C C++代码的调试 2 自动插入文件头 新建C C++源文件时自动插入表头:包括文件名 作者 联系方式 建立时间等 读者可根据需求自行更改 3 ...

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm

    附录C Java编程规则 附录D 性能 D.1 基本方法 D.2 寻找瓶颈 D.2.1 安插自己的测试代码 D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 性能评测的技巧 D.3 提速方法 D.3.1 常规手段 D.3.2 依赖语言的方法 D.3.3 特殊...

    超爽的自学课件(java)

    尽管这些与C和C++中见到的有一定的共通性,但多少存在一些区别。除此以外,所有示例都是完整的Java示例,能使大家很快地熟悉Java的外观。 &lt;br&gt;(4) 第4章:初始化和清除 本章开始介绍构建器,它的作用是担保...

Global site tag (gtag.js) - Google Analytics