我想替换文本文件中存在的字符串中的几个单词。每当建立比赛时,都会删除该比赛。示例:“学习Java并不是那么容易,但是/ *也不是那么难* / int a,int b,char c”。我需要用它替换整个注释部分和相关单词(/ *- -------- * /)并多次打印将要创建的关键字。在这种情况下,我该怎么办?这是我的代码。
public static void main(String[] args)throws IOException
{
File f1=new File("Read_A_File.txt");
File f2=new File("New_Generated_File.txt");
FileReader fr=new FileReader(f1);
FileWriter fw=new FileWriter(f2);
BufferedReader br=new BufferedReader(fr);
BufferedWriter bw=new BufferedWriter(fw);
String st;
while((st=br.readLine())!=null)
{
if(st.contains("/*"))
{
bw.write(st.replaceAll("([/*-*/])", " "));
}
System.out.println(st);
bw.newLine();
}
br.close();
bw.close();
}
答案 0 :(得分:0)
编程基础之一。我发现最简单的方法是找到分隔符,并切出要保留的部分,然后将它们连接起来。例如:
String str = "word word, /*comment*/ drow drow";
String result;
int start = str.indexOf("/*");
int end = str.indexOf("*/");
result = str.substring(0, start+1)+str.substring(end, str.length()-1);
或根据需要将其放入循环中。首先,您搜索注释开头和结尾的索引,然后仅用子字符串切出所需的部分。 (根据文档,开始是包容性的,而结束是排他性的...),此外,您必须从长度取反,因为它返回的是总长度,但是indes以0开头。这种方法也取悦了编程的嗜血之神
另一种方法可能是使用deleteCharAt()进行for循环,您只需遍历字符串并逐个删除字符:
for (int i=0; i<end-start; i++) {
str.deleteCharAt(start);
}
这很好,因为无论语言如何,基本思想都是相同的。第二个也是不可思议的解决方案。