gpt4 book ai didi

java - 如何扫描文件并替换某些短语?

转载 作者:行者123 更新时间:2023-12-01 16:40:11 25 4
gpt4 key购买 nike

请您帮助解决以下问题:

这是专门为澄清我的问题而定制的示例代码:

    File accounts_File = new File("Sample_Folder\\example.txt");
FileInputStream fis = null;
BufferedInputStream bis = null;
DataInputStream dis = null;

String str_String = ""; //For storing the input from the file.

fis = new FileInputStream(accounts_File);
bis = new BufferedInputStream(fis);
dis = new DataInputStream(bis);

while (dis.available() != 0)
{
str_String = dis.readLine(); //Reading the line from the file.

StringTokenizer st = new StringTokenizer(str_String);

while (st.hasMoreTokens())
{
//I need some help here
}

}

fis.close();
bis.close();
dis.close();

输入文件 (example.txt) 如下所示:James>Hector>AUS>25

目标只是扫描并用“Anderson”替换“Hector”。问题是“赫克托”这个名字并不为人所知。唯一已知的是它的位置(在第一个“>”之后)。

注意:如果这样更容易的话,我可以更改输入文件的格式。作为示例,我可以将格式更改为:

名字:詹姆斯
姓氏:赫克托
国家/地区:澳大利亚
年龄:25

*程序现在将扫描关键字“LastName:”并将其后面的所有内容替换为“Anderson”。

预先感谢您的帮助!

非常感谢任何建议。

最佳答案

保留格式,它看起来像一个标准的 csv 文件(逗号分隔值,其中“逗号”是“>”字符)并且 csv 文件易于读​​写!

由于您无法替换“磁盘上”的文件内容,因此您必须将文件读入内存,在内存中重写所需的更改,然后将其重写到磁盘。

文件的一个简单模型是一个二维字符串数组,文件的每一行都是一行,每个值一列,总共 4 列。姓氏(您要替换的字符串)现在始终位于matrix[lineNumber][1]。更改每行第二列的值即可完成。

对于生产代码,我将编写一个类来表示一条记录。然后,您的代码可能如下所示:

public void replace(File inputFile, String newName) {
List<Person> persons = new ArrayList<Person>();

// read the file
List<String> lines = readFile(inputFile);

// create a person instance for each line
for (String line:lines) {
String[] values = line.split(">");
persons.add(new Person(values));
}

// change the last name
for (Person person:persons) {
person.setLastName(newName);
}

// store all persons to file
writeFile(inputFile, persons);
}

请注意,实际工作(文件 IO、更改名称)是在不同的方法和类中完成的。这使得替换方法中的主要算法保持可读。

关于java - 如何扫描文件并替换某些短语?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4601987/

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