【问题描述】
编写程序将一个指定文件中给定字符串删除。假设给定的字符串长度不超过20,文件中每行的字符数不超过100。要求:给定的字符串大小写无关。
【输入形式】
给定文件名为filein.txt。从标准输入中输入要删除的字符串(不含空格)。
【输出形式】
将删除后的结果输出到文件fileout.txt中。
【样例输入】
从标准输入中输入要删除的字符串:
in
文件filein.txt的内容为:
#include <stdio.h>
void main()
{
FILE * IN;
if((IN=fopen("in.txt","r"))==NULL)
{
printf("Can’t open in.txt!");
return;
}
fclose(IN);
}
【样例输出】
文件fileout.txt的内容应为:
#clude <stdio.h>
void ma()
{
FILE * ;
if((=fopen(".txt","r"))==NULL)
{
prtf("Can’t open .txt!");
return;
}
fclose();
}
【样例说明】
输入的要删除的字符串为in,即将文件filein.txt中所有出现的in字符串(包括iN、In、IN字符串)删除,然后将删除后的文件内容输出保存在文件fileout.txt中。
【样例代码】
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class DeleteStr {
static final Scanner sc = new Scanner(System.in, "UTF-8");
public static void main(String[] args) throws UnsupportedEncodingException {
String str = sc.next();
File rf = new File("filein.txt");
File wf = new File("fileout.txt");
String line;
List<String> content = new ArrayList<String>();
try {
FileReader fr = new FileReader(rf);
BufferedReader bf = new BufferedReader(fr);
try {
line = bf.readLine();
while (line != null) {
Pattern p = Pattern.compile(str, Pattern.CASE_INSENSITIVE); //创建一个格式对象:str的格式忽视大小写
Matcher matcher = p.matcher(line); //用格式对象创建一个匹配器:对line的数据进行匹配
line = matcher.replaceAll(""); //用匹配器来实现替换
content.add(line);
line = bf.readLine();
}
FileWriter fw = new FileWriter(wf);
BufferedWriter bw = new BufferedWriter(fw);
for (String item : content) {
bw.write(item); //写数据
bw.newLine(); //跳到下一行
}
bw.flush();
bw.close();
bf.close();
fr.close();
fw.close();
} catch (IOException e) {
System.out.println("操作失败");
}
} catch (FileNotFoundException e) {
System.out.println("没有找到该文件");
}
}
}