首页 > 文章列表 > 在Java中编写一个程序,将文件中的所有字符替换为“#”,除了特定的单词

在Java中编写一个程序,将文件中的所有字符替换为“#”,除了特定的单词

关键词:Java 字符替换 编写程序
139 2023-09-07

String类的split()方法。将当前字符串拆分为给定正则表达式的匹配项。此方法返回的数组包含此字符串的每个子字符串,该子字符串由与给定表达式匹配的另一个子字符串终止或以字符串末尾终止。

replaceAll() String 类的方法接受两个表示正则表达式的字符串和一个替换字符串,并用给定的字符串替换匹配的值。

用“#”替换文件中除特定单词之外的所有字符(一种方式)-

  • 将文件的内容读取到字符串中。

  • 创建一个空的StringBuffer 对象。

  • 使用 split() 方法将获取的字符串拆分为 String 数组。

  • 遍历得到的数组。

  • 如果其中有任何元素与所需的单词匹配,则将其追加到 String 缓冲区。

  • 将剩余单词中的所有字符替换为“#”,并将其追加到 StringBuffer 对象中。

  • 最后将 StingBuffer 转换为 String。

    >

示例

假设我们有一个名为sample.txt的文件,其中包含以下内容 -

Hello how are you welcome to Tutorialspoint we provide hundreds of technical tutorials for free.

以下程序将文件内容读取为字符串,并将其中除特定单词之外的所有字符替换为“#”。

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Scanner;
public class ReplaceExcept {
   public static String fileToString() throws FileNotFoundException {
      String filePath = "D://input.txt";
      Scanner sc = new Scanner(new File(filePath));
      StringBuffer sb = new StringBuffer();
      String input;
      while (sc.hasNextLine()) {
         input = sc.nextLine();
         sb.append(input);
      }
      return sb.toString();
   }
   public static void main(String args[]) throws FileNotFoundException {
      String contents = fileToString();
      System.out.println("Contents of the file: n"+contents);
      //Splitting the words
      String strArray[] = contents.split(" ");
      System.out.println(Arrays.toString(strArray));
      StringBuffer buffer = new StringBuffer();
      String word = "Tutorialspoint";
      for(int i = 0; i < strArray.length; i++) {
         if(strArray[i].equals(word)) {
            buffer.append(strArray[i]+" ");
         } else {
            buffer.append(strArray[i].replaceAll(".", "#"));
         }
      }
      String result = buffer.toString();
      System.out.println(result);
   }
}

输出

Contents of the file:
Hello how are you welcome to Tutorialspoint we provide hundreds of technical tutorials for free.
[Hello, how, are, you, welcome, to, Tutorialspoint, we, provide, hundreds, of, technical, tutorials, for, free.]
#######################Tutorialspoint ############################################