我正在尝试替换.txt文件中的一行字符串。 但是,当我运行我的代码时,程序只删除行中的所有内容,包括空格 这是我的代码:
public static void main(String[] args) {
try {
String str;
String temp = "";
String oldtext = "";
BufferedReader br = new BufferedReader(new FileReader("file.txt"));
while ((str = br.readLine()) != null) {
oldtext += str + "\r\n";
if (str.equals("I drink Java")) {
temp = br.readLine();
System.out.println(temp);
}
}
br.close();
String newtext = oldtext.replaceAll(temp, "Hello");
FileWriter writer = new FileWriter("file.txt");
writer.write(newtext);
writer.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
file.txt的
I drink Java
I sleep Java
This is test string 1
This is test string 20000
我正在尝试使用String变量temp将“I sleep Java”行替换为“Hello”。我知道它可以使用String newtext = oldtext.replaceAll("I sleep Java","Hello");
但我想知道它是否有可能像我那样做。如果是的话,谁能告诉我我错在哪里?
谢谢! :)
答案 0 :(得分:1)
仔细看看:
while ((str = br.readLine()) != null) { oldtext += str + "\r\n"; if (str.equals("I drink Java")) { temp = br.readLine(); System.out.println(temp); } }
如果该行是“我喝Java”,
然后你阅读下一行并将其存储到temp
。
该行永远不会附加到oldtext
,
像所有其他线路一样。
因此oldtext
中缺少此行。
后来 执行此操作时:
String newtext = oldtext.replaceAll(temp, "Hello");
没有任何内容与temp
匹配,因为temp
不属于oldtext
。
也许你想要追加它,就像所有其他行一样:
oldtext += temp + "\r\n";
答案 1 :(得分:0)
您不应致电br.readLine()
来设置temp
:
while ((str = br.readLine()) != null) {
oldtext += str + "\n";
if (str.equals("I drink Java")) {
temp = str+"\n";
}
}
br.close();
String newtext = oldtext.replaceAll(temp, "Hello"+"\n");
答案 2 :(得分:0)
为什么你首先检查str包含I drink Java
在下面的代码中。只需先将文件中的完整文本读入java变量,最后再替换。
它将更加优化,可读和干净
while((str = br.readLine()) !=null) {
oldtext += str + "\r\n";
if(str.equals("I drink Java")){
temp = br.readLine();
System.out.println(temp);
}
} br.close();
String newtext = oldtext.replaceAll(temp,"Hello");
如下所示
while((str = br.readLine()) !=null) {
oldtext += str + "\r\n";
} br.close();
String newtext = oldtext.replaceAll("I drink Java","Hello");
最佳方式
String newText= "";
while((str = br.readLine()) !=null) {
if(str.equals("I drink Java")){
str = "Hello";
}
newText+= str + "\r\n";
} br.close();
现在只需编写新文本
FileWriter writer = new FileWriter("file.txt");
writer.write(newtext);
writer.close();