java小程序有关问题

巽谷雨 2011-10-15 07:13:23
怎么用正则表达式,比如str="hafdsdgdfgfdgg;
/*fdadasfsd
fdasfdsf*/
fasfjsdf;
fsadf;
/*fsadf*/

fdasfgs;
/*fdasfsd
fdasf*/
fdasfds;";



我想要用程序删除注释里内容包括/**/,谁能给点代码看看
...全文
153 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2011-10-16
  • 打赏
  • 举报
回复
一行一行,什么意思?
你把所有的内容都读入到一个字符串里再替换应该可以
如果是一行一行读入,那么要自己进行判断
for example
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);


如果需要一行一行读入处理,就自己判断/*从哪里开始,然后判断*/在哪里结束,然后这部分的内容不保存到content中,//的处理相同
qybao 2011-10-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 li_xun 的回复:]
text = text.replaceAll("//.*?(\n)+", "\n"); //替换//的注释,如果删除后面的空白行,则(\n)+,否则\n就可以了。


这句我运行,怎么删不了呢
[/Quote]
不知道你整体是如何处理的
可能你的//注释行的最后没有带\n换行符,改成
text = text.replaceAll("//.*?(\n+|.*)", "\n");
巽谷雨 2011-10-16
  • 打赏
  • 举报
回复
text = text.replaceAll("//.*?(\n)+", "\n"); //替换//的注释,如果删除后面的空白行,则(\n)+,否则\n就可以了。


这句我运行,怎么删不了呢
巽谷雨 2011-10-15
  • 打赏
  • 举报
回复
若是在一行就能输出,为什么像以上一行一行的就不行呢,急需求解
巽谷雨 2011-10-15
  • 打赏
  • 举报
回复
str==
package test;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CPTest1 {



public static void main(String[] args) throws IOException {

FileInputStream fs = new FileInputStream("1.in");
int start = str.indexOf("


byte[] buffer = new byte[3];

int length;

/*while(-1 != (length = fs.read(buffer, 0, 3)))
{
String str = new String(buffer,0, length);*/

System.out.println(str);
}

fs.close();
/*DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(
new FileOutputStream("1.txt")));
byte b = 3;
int i = 12;
char ch = 'a';
float f = 3.3f;
dos.writeByte(b);
dos.writeInt(i);
dos.writeChar(ch);
dos.writeFloat(f);
dos.close();*/
DataInputStream dis = new DataInputStream(new BufferedInputStream(
new FileInputStream("1.in")));


}
}


str是以上字符串,可是用String str2 = str.replaceAll("[/][*](.*?\\s+)*(.*?|\\s+)[*][/]", "");
输不出来。是怎么回事
巽谷雨 2011-10-15
  • 打赏
  • 举报
回复
比如一个程序里所有注释,包括两种//,


//注释东西
String str2 = "";
int end = 0;
void main();//注释

怎么用
qybao 2011-10-15
  • 打赏
  • 举报
回复
如果不一定有换行符,可以把\\s+换成\\s*
qybao 2011-10-15
  • 打赏
  • 举报
回复
for example
String s = "hafdsdgdfgfdgg;\n/*fdadasfsd\nfdasfdsf*/\nfasfjsdf;"; //so on
String result = s.replaceAll("[/][*](.*?\\s+)*(.*?|\\s+)[*][/]", "");
System.out.println(result);

67,519

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧