gpt4 book ai didi

java - 更换纺织品中的一条线,留下旧线的残余物

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

我有一个文本文件 inventory.txt,其中包含

cats, 10, 15
dogs, 10, 15

我想运行一个代码,可以输入 cats 作为 replaceeturtles, 5, 5 作为 replacer,给我,

turtles, 5, 5
dogs, 10, 15

但是,当我这样做时,除了我的 replacer 之外,第一个逗号之后的所有内容都会保留。我可以将 cats 替换为 turtles 而没有 5, 5,给我

turtles, 10, 15
dogs, 10, 15

但是当我尝试在第一个逗号后面添加 5, 5 时,输出如下。

代码

public void modifyItems() throws IOException {

File file = new File("src/inventory.txt");
String line = "";
String oldLine = "";
String replacee;
String replacer;

BufferedReader reader = new BufferedReader(new FileReader(file));

while ((line = reader.readLine()) != null) {
oldLine += line + System.lineSeparator();

}
System.out.println(oldLine);
reader.close();

System.out.println("enter the item you want to edit");
replacee = scan.next();
scan.nextLine();
System.out.println("enter the updated information");
replacer = scan.nextLine();
String newLine = oldLine.replaceAll(replacee, replacer);

BufferedWriter writer = new BufferedWriter(new FileWriter(file));
writer.write(newLine);
writer.flush();
writer.close();
}

输出

cats, 10, 15
dogs, 10, 15

enter the item you want to edit
cats
enter the updated information
turtles, 5, 5

文本文件输出

turtles, 5, 5, 10, 15
dogs, 10, 15

最佳答案

String replaceAll 方法执行您在代码中看到的操作。它将用您输入的库存字符串替换您输入的文本。

您要使用的方法是 String startsWith 方法。

您需要保持读取的行数组,以便您可以找到要替换的正确行。

public void modifyItems() throws IOException {

File file = new File("src/inventory.txt");

// Replace 100 with a large enough number to hold
// the whole file.
String[] oldLine = new String[100];

BufferedReader reader = new BufferedReader(
new FileReader(file));
int count = 0;
String line = "";
while ((line = reader.readLine()) != null) {
oldLine[count] = line + System.lineSeparator();
System.out.println(line);
count++;
}
reader.close();

System.out.println("enter the item you want to edit");
String replacee = scan.nextLine();
System.out.println("enter the updated information");
String replacer = scan.nextLine();

BufferedWriter writer = new BufferedWriter(
new FileWriter(file));
for (int i = 0; i < count; i++) {
if (oldLine[i].startsWith(replacee)) {
writer.write(replacer);
} else {
writer.write(oldLine[i]);
}
}
writer.flush();
writer.close();
}

关于java - 更换纺织品中的一条线,留下旧线的残余物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61605055/

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