JAVA,将java文件中的单行和多行注释内容替换为空,正则表达式如何实现!

 我来答
nanjiang_
2010-12-24 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:75
采纳率:0%
帮助的人:59.6万
展开全部
我们知道java中有三种注释方式
1. // 单行
2. /* .......*/ 单行 或多行
3. /** .......*/ 单行 或多行

我们的目的就是把以上三种特征的注释替换
以下是例子

String s = “。。。。。。。。”; // 将文件的内容赋值给s

Pattern pattern1 = Pattern.compile("//(.*)"); //特征是所有以双斜线开头的
Matcher matcher1 = pattern1.matcher(s);
s = matcher1.replaceAll(""); //替换第一种注释

Pattern pattern2 = Pattern.compile("/\\*(.*?)\\*/", Pattern.DOTALL); //特征是以/*开始,以*/结尾,Pattern.DOTALL的意思是糊涂模式,这种模式下.(点号)匹配所有字符
Matcher matcher2 = pattern2.matcher(s);
s = matcher2.replaceAll(""); //替换第二种注释

Pattern pattern3 = Pattern.compile("/\\*\\*(.*?)\\*/", Pattern.DOTALL); //特征是以/**开始,以*/结尾
Matcher matcher3 = pattern3.matcher(s);
s = matcher3.replaceAll(""); //替换第三种注释

System.out.println(s); //打印结果
十年一树百年一人
2010-12-24 · 超过17用户采纳过TA的回答
知道答主
回答量:29
采纳率:0%
帮助的人:22.3万
展开全部
这种东东写起来还真头疼~~~还以为不行(不足的是还没考虑到代码里要是有什么变量包含了 // /* */之类的符号的话..会转换错了..)
public static void main(String[] args) throws Exception
{

FileInputStream fis=new FileInputStream("E:\\workspace\\bus_mod\\src\\test\\Unique.java");
int len=0;
byte[] b=new byte[190];
String res="";
while((len=fis.read(b))!=-1){
res+=new String(b,0,len);
}
fis.close();
res=res.replaceAll("(/[*]|[*]/)", "______________"); //替换整段注释的符号,*号本身比较不好处理
res=res.replaceAll("\r\n", "\n"); //替换回车换行,统一处理..需要可以再换回去
res=res.replaceAll("(//)(.*)(\n)", "\n");//把单行注释替换为空

res=res.replaceAll("\n", "@@@@@@@@@@@@@@@"); //先把换行符替换掉,和*号一样,特殊字符不好处理,先替换
res=res.replaceAll("(______________)((.)*?)(______________)", ""); //多行的注释替换为空
res=res.replaceAll("@@@@@@@@@@@@@@@", "\n"); //换回换行符

res=res.replaceAll("(\t|\b|\f|\t)*\n", "\n"); //去掉空行里的空字符,制表符,空格等

res=res.replaceAll("\n{2,}", "\n"); //去掉空行

System.out.println(res);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wanwankankao
2010-12-24
知道答主
回答量:5
采纳率:0%
帮助的人:0
展开全部
这个不会
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式