![](/img/trans.png)
[英]Find a specific line of a text file (not by line_number) and store it as a new String
[英]How to find lines in a text file containing specific strings and replace each whole line with a new string,?
刚从 Android 上的 Java 开始。找到很多示例代码来搜索字符串并替换它们或删除它们出现的行。
但是没有什么可以用新字符串替换字符串所在的整行。
如果有示例,我将不胜感激指向它的指针或一些我可以修改的示例代码。
该文件永远不会超过 50 行。
总是会搜索两个字符串,并且每个字符串出现的行总是会被一个全新的字符串替换。
每个字符串在文件中只会出现一次(尽管可能有一些类似的)。
行号未知(该行的 rest 的文本也是如此)。
新行必须以与原始行完全相同的行号插入到文本文件中。
文本文件命名示例:xyz-colors.txt
搜索字符串一:yellow-XXc
新字符串替换字符串 1 所在的完整行:John - black-XXe - new pin 13762
搜索字符串二:green-BBa
新字符串替换出现字符串二的完整行:Mike - red-XXd - new pin 14862
谢谢你的指点。
编辑:
我几乎要放弃了。 这么多例子,但都发现字符串多次出现,这将浪费资源和时间,因为我确定只有一次出现。 我只会要求他们重组他们的文件,所以我现在需要替换的行号然后是 go。
Edit2:文件无法重组,所以我必须找到 Paths.get 的替代方法
Edit3:我刚刚解决了这个问题。 使用 Scanner 获取行号,使用 BufferedReader 和 FileReader/readline 获取该行号的完整字符串。 现在我只需要使用 FileWriter 将整行中的字符串替换为另一个包含更改的字符串。 完成后我会发布完整的代码。
让我们这样处理:
您有一个文件要读取 --> 先弄清楚如何加载它
您必须更新文件 --> 了解如何更新文件。
阅读所有行(因为最多 50 行,所以不应该关心这里的优化)
遍历每一行,检查它是否包含您正在搜索的字符串,将 Line 替换为新的 Line。
循环结束? 使用更新的行列表更新您的文件。
考虑使用 File.readAllLines() from Java >= 8
一些对您有用的文档: https://javarevisited.blogspot.com/2015/07/3-ways-to-read-file-line-by-line-in.html#axzz6dg6HEon1
只是一个没有异常处理的简单示例作为起点:
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
public class Test {
public static void main(String[] args) throws IOException {
//path to your file
String filename ="C:\\Temp\\xyz-colors.txt";
//read content of file to list
List<String> list = Files.readAllLines(Paths.get(filename));
String searchOne = "yellow-XXc";
String replacementOne = "John - black-XXe - new pin 13762";
String searchTwo = "green-BBa";
String replacementTwo = "Mike - red-XXd - new pin 14862";
list.replaceAll(s -> s.contains(searchOne) ? replacementOne : s);
list.replaceAll(s -> s.contains(searchTwo) ? replacementTwo : s);
//write modified list to file
Files.write(Paths.get(filename), list, Charset.forName("UTF-8"));
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.