gpt4 book ai didi

java - 替换文件中的某些行

转载 作者:行者123 更新时间:2023-12-02 06:43:22 25 4
gpt4 key购买 nike

我的扫描仪读取一个文件,然后在一个新文件中,我的作者复制其中的一部分,并替换我要编辑的行。

我在某些特定行中遇到问题,我想向其中添加一些来自 stringarray [Ddd,Eee,...] 的元素。

我的问题是我无法让扫描仪和文件写入器识别我想要传输元素的确切位置。它们需要位于 "downstream_rm" 下方、/和/之间,并且还需要替换旧文本。

示例/目标:

旧文件行:

 ....
downstream_rm(j,l) ...
/ Aaa.(bbb)
Bbb.(ccc) /
....

新文件行:

 ...
downstream_rm(j,l( ....
/ str1
str2
... /

我尝试了这段代码,但没有得到所需的结果,因为它还保留了旧文本:

public static void main(String[] args) {

File file = new File();
File filenew = new File();

try {


PrintWriter out = new PrintWriter(new FileWriter(filenew, true));
Scanner scanner = new Scanner(file);




while (scanner.hasNextLine()) {
String line = scanner.nextLine();


if(line.contains("downstream_rm(j,l)")) {

scanner.nextLine(); // so that the line with "downstream" wont be deleted

String raw = "" ;


for (int index = 0; index < strarray.size(); index++) {

String s = strarray.get(index);
raw = raw + "\n" + s;
}

line = "/"+raw+"/" ; }
out.write(line);
out.write("\n");

}
out.flush();
out.close();
scanner.close();


} catch (IOException e) {
e.printStackTrace();


}
}
}

也尝试过这个,但它没有打印任何新内容:

        if(line.contains("downstream_rm(j,l)")){

scanner.nextLine();

String raw = "" ;


for (int index = 0; index < strarray.size(); index++) {

String s = strarray.get(index);
raw = raw + "\n" + s;
}

String raw2 = raw.replaceAll(",", "");

line = line.replaceAll("/.*?/", "/"+raw2+"/");
}
out.write(line);
out.write("\n");

最佳答案

你的代码没有做它应该做的事情,因为在行中

 line = line.replaceAll("/.*?/", "/"+raw2+"/");

引用“line”中的字符串与正则表达式不匹配,因此它不会替换

这就是您的需求

if (line.contains("downstream_rm(j,l)")) {
String replacement = line;
while (!replacement.matches(".*?/.*?/.*?")) {
replacement += scanner.nextLine();
}
String raw = "";
for (int index = 0; index < strarray.size(); index++) {

String s = strarray.get(index);
raw = raw + "\n" + s;
}
String raw2 = raw.replaceAll(",", "");
line = replacement.replaceAll("/.*?/", "/" + raw2 + "/");
}

只需确保您的“raw2”变量指向正确的 String 对象,并且结果变量行将包含替换的字符串

关于java - 替换文件中的某些行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18899784/

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