java - 替换字符串会删除文本中的所有内容

标签 java

我正在尝试为这个问题编写一个程序:“编写一个程序,向用户询问字符串和文件名,然后从该文本文件中删除该字符串的所有出现。”

这是我到目前为止所拥有的:

    import java.io.FileNotFoundException;
    import java.io.PrintWriter;
    import java.util.*;

    public class RemoveText {
        public static void main(String[] args){

    //creates a scanner to read the user's file name
    Scanner input = new Scanner(System.in);
    System.out.println("Enter a file name: ");
    String fileName = input.nextLine();

    java.io.File file = new java.io.File(fileName);
    java.io.File newFile = new java.io.File(fileName);
    Scanner stringToRemove = new Scanner(System.in);
    System.out.println("Enter a string you wish to remove: ");
    String s1 = stringToRemove.nextLine();

    //creating input and output files
    try {
        Scanner inputFile = new Scanner(file);
        //reads data from a file
        while(inputFile.hasNext()) {
            s1 += inputFile.nextLine();
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

    //supposed to replace each instance of the user input string 
    //but instead deletes everything on the file and i don't know why
    String s2 = s1.replaceAll(s1, "");

    try {
        PrintWriter output = new PrintWriter(newFile);
        output.write(s2);
        output.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

    //closing various scanners
    input.close();
    stringToRemove.close();
  }
}

但由于某种原因,整个文本文件变成了空,而不是用空格替换字符串。我做错了什么?

编辑:好的,所以我听取了每个人的建议,并通过引入第三个字符串变量并使用更具描述性的变量名称来解决变量问题。

   Scanner s1 = new Scanner(System.in);
   String stringToRemove = s1.nextLine();
   String fileContents = null;

   try {
    //stuff here
      while (inputFile.hasNextLine()) {
      fileContents += inputFile.nextLine();
    } catch { //more stuff }

   String outputContent = fileContents.replaceAll(stringToRemove, "");

我现在的问题是,在转发新内容之前,新文件的开头以“null”开头。

最佳答案

String s2 = s1.replaceAll(s1, "");

replaceAll方法的第一个参数是你要查找替换的内容,并且你正在寻找s1,你是说用这段代码清理所有s1内容...

关于java - 替换字符串会删除文本中的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44378859/

相关文章:

java - 如何在 Eclipse 中导入 "org.apache.http.client.HttpClient"?

java - 如何在 Java 调试详细信息格式化程序中将字节数组显示为字符串?

Java - 为什么显示 2 个版本?

java - Spring Boot 光配置

Java 发布和调试属性文件

java - Android消息应用架构硬件要求

java - Spring Security 自动身份验证不起作用

java - 无法使用java代码从azure服务器下载图像

java - 如何在 Java Streams 中记录过滤后的值

java - 选择到下一个大写字母的快捷方式 IntellIJ/Android Studio