gpt4 book ai didi

java - 在 Java 中读取文件、替换单词并写入新文件

转载 作者:行者123 更新时间:2023-12-01 13:39:08 26 4
gpt4 key购买 nike

我正在尝试读取一个文本文件,然后将其放入 ArrayList 中,然后遍历该 ArrayList 并将任何出现的单词“this”替换为“**”。然后,我想将修改后的 ArrayList 放回到包含新编辑的文本的新文件中。

应用程序当前可以正确地将行读取到 ArrayList 中,并且可以写入新文件。但是,replaceWords 方法似乎没有按预期运行,即它没有被 ** 替换。任何帮助将不胜感激!

package com.assignment2s162305.answers;

import java.io.FileWriter;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Collections;

public class Question27 {

private List<String> lines = new ArrayList<String>();

// read original file to an ArrayList
public String[] readOriginalFile(String filename) throws IOException {
FileReader fileReader = new FileReader(filename);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String line = null;
while ((line = bufferedReader.readLine()) != null) {
lines.add(line);
}
bufferedReader.close();
return lines.toArray(new String[lines.size()]);
}

// replace words with ****
public void replaceWords() {
Collections.replaceAll(lines, "this", "****");
System.out.println(lines);
}

// write modified ArrayList to a new file
public void writeToNewFile() throws IOException {
FileWriter writer = new FileWriter("output.txt");
for (String str : lines) {
writer.write(str);
}
writer.close();
}

}

package com.assignment2s162305.answers;

import java.io.IOException;

public class Question27Test {
public static void main(String[] args) {
Question27 question27object = new Question27();

String filename = "Hamlet2.txt";

try {
String[] lines = question27object.readOriginalFile(filename);
System.out.println("______ORIGINAL DOCUMENT______\n");
for (String line : lines) {
System.out.println(line);
}
System.out.println("\n\n");
question27object.replaceWords();
question27object.writeToNewFile();
} catch(IOException e) {
// Print out the exception that occurred
System.out.println("Unable to create "+filename+": "+e.getMessage());
}
}
}

最佳答案

您的 replaceWords 方法有错误。要修复它,您需要遍历各行并在每行中进行替换。您所实现的是将所有等于 "this" 的行替换为 ****。所以这工作正常,但不是你想要的。

这个代码。这将修复它。

public void replaceWords() {
ArrayList<String> lns = new ArrayList<String>();
for (String ln : lines){
lns.add(ln.replaceAll("this", "****"));
}
lines.clear();
lines = lns;
System.out.println(lines);
}

关于java - 在 Java 中读取文件、替换单词并写入新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20977488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com