gpt4 book ai didi

java - 如何在 Java 中使用 HashMap 一次替换文件中的多个字符串

转载 作者:行者123 更新时间:2023-11-30 07:13:52 26 4
gpt4 key购买 nike

我正在尝试使用 HashMap 在一个方法中替换多个字符串,但目前我只能让它与 Map 中的第一个字符串一起使用。

以前我为每个字符串使用“replaceAll”方法,这很难维护,因为我试图替换不断变化的字符串列表。

你能给我一些想法吗?

这是我的代码:

private static void string_change(String args[])
{
try
{
File file = new File("input_file.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = "", oldtext = "";
while((line = reader.readLine()) != null)
{
oldtext += line + "\r\n";
}
reader.close();

Map<String, String> ReplacementMap = new HashMap<String, String>();
ReplacementMap.put("STRING1", "TEXT1");
ReplacementMap.put("STRING2", "TEXT2");
ReplacementMap.put("STRING3", "TEXT3");

String originalString = oldtext;

for (Map.Entry<String, String> entry : ReplacementMap.entrySet()) {
StringBuilder builder = new StringBuilder(originalString.replaceAll(entry.getKey(), entry.getValue()));

String newtext = builder.toString();

FileWriter writer = new FileWriter("output_file.txt");
writer.write(newtext);
writer.close();
}

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

最佳答案

问题是,您尝试为映射中的每个条目写入文件。因此只有最后一个条目被应用到目标文件。更好的解决方案是在写入文件之前应用所有替换。

File file = new File("input_file.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
StringBuffer buffer = new StringBuffer();
String line;
while((line = reader.readLine()) != null) {
buffer.append(line);
buffer.append("\r\n");
}
reader.close();

Map<String, String> replacementMap = new HashMap<String, String>();
replacementMap.put("STRING1", "TEXT1");
replacementMap.put("STRING2", "TEXT2");
replacementMap.put("STRING3", "TEXT3");

String toWrite = buffer.toString();
for (Map.Entry<String, String> entry : replacementMap.entrySet()) {
toWrite = toWrite.replaceAll(entry.getKey(), entry.getValue()));
}

FileWriter writer = new FileWriter("output_file.txt");
writer.write(toWrite);
writer.close();

关于java - 如何在 Java 中使用 HashMap 一次替换文件中的多个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18992742/

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