为了账号安全,请及时绑定邮箱和手机立即绑定

如何让我的删除功能删除包含我输入的内容的整行,而不是我输入的内容?

如何让我的删除功能删除包含我输入的内容的整行,而不是我输入的内容?

萧十郎 2023-05-24 14:57:41
我有一个从文本文件中添加、搜索和删除行的功能。搜索与大小写无关,并且有一个 .contains 允许它在少于整行的情况下工作。删除功能只删除完全匹配。我正在访问一个外部 .txt 文件,该文件保存所做的更改。我尝试复制我的搜索代码,但无法产生相同的结果。我还想完全删除该行,以便在我不删除最后一个条目时让我的表格保持干净,但这不太重要。    System.out.println("What would you like to delete");    Scanner deleteScanner = new Scanner(System.in);    String deleteInput = deleteScanner.nextLine();    try{          File file = new File("contacts.txt");          File temp = File.createTempFile("file", ".txt",           file.getParentFile());          BufferedReader reader = new BufferedReader(new           InputStreamReader(new FileInputStream(file)));          PrintWriter writer = new PrintWriter(new           OutputStreamWriter(new FileOutputStream(temp)));         for (String line; (line = reader.readLine()) != null;) {            line = line.replace(deleteInput, "");            writer.println(line);        }  reader.close();  writer.close();  file.delete();  temp.renameTo(file);    } catch (IOException e){         e.printStackTrace();    }我觉得 .contains 应该可以工作,但我无法使其按预期运行。
查看完整描述

1 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

您可以使用以下方法更轻松地获取所有文件行:


List<String> lines = Files.readAllLines(Paths.get(path), Charset.defaultCharset());

之后,您可以简单地遍历列表lines并删除整行,如果它包含deleteInput:


for (String line : lines) {

    if (line.contains(deleteInput)) {

        lines.remove(line);

    }

}

如果需要toLowerCase()在每次检查之前找到可以忽略占用的案例。


查看完整回答
反对 回复 2023-05-24
  • 1 回答
  • 0 关注
  • 77 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信