日期:2014-05-20  浏览次数:20772 次

java小程序有关问题
怎么用正则表达式,比如str="hafdsdgdfgfdgg;
/*fdadasfsd
fdasfdsf*/
fasfjsdf;
fsadf;
/*fsadf*/
   
fdasfgs;
/*fdasfsd
fdasf*/
fdasfds;";



我想要用程序删除注释里内容包括/**/,谁能给点代码看看

------解决方案--------------------
for example
Java code
String s = "hafdsdgdfgfdgg;\n/*fdadasfsd\nfdasfdsf*/\nfasfjsdf;"; //so on
String result = s.replaceAll("[/][*](.*?\\s+)*(.*?|\\s+)[*][/]", "");
System.out.println(result);

------解决方案--------------------
如果不一定有换行符,可以把\\s+换成\\s*
------解决方案--------------------
一行一行,什么意思?
你把所有的内容都读入到一个字符串里再替换应该可以
如果是一行一行读入,那么要自己进行判断
for example
Java code
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("CPTest1.java")));
String buf; 
StringBuilder content = new StringBuilder(); 
while((buf=br.readLine())!=null) { 
    content.append(buf).append("\n"); //把文件所有的内容保存到一个content中
}
br.close();
String text = content.toString();
text = text.replaceAll("[/][*](.*?\\s*)*(.*?|\\s*)[*][/]", ""); //替换/**/之间的内容
text = text.replaceAll("//.*?(\n)+", "\n"); //替换//的注释,如果删除后面的空白行,则(\n)+,否则\n就可以了
System.out.println(text);