删除字符串(新)

删除字符串(新)

【问题描述】

编写程序将一个指定文件中给定字符串删除。假设给定的字符串长度不超过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&rsquo;t open in.txt!");
       return;
    }
    fclose(IN);
}

【样例输出】

文件fileout.txt的内容应为:

#clude <stdio.h>
void ma()
{
    FILE * ;
    if((=fopen(".txt","r"))==NULL)
    {
       prtf("Can&rsquo;t open .txt!");
       return;
    }
    fclose();
}

【样例说明】

输入的要删除的字符串为in,即将文件filein.txt中所有出现的in字符串(包括iN、In、IN字符串)删除,然后将删除后的文件内容输出保存在文件fileout.txt中。

【评分标准】

该题要求得到删除给定字符串后的文件内容。

【代码实现】

package JavaXiTi;
import java.util.Scanner;

import java.io.*;

public class Delete {
    public static void main(String[] args){
        Scanner input=new Scanner(System.in);
        String ini=input.nextLine();
        File file=new File("filein.txt");
        File file1=new File("fileout.txt");
        InPuts inPut=new InPuts();
        inPut.getIn(file);
        Modifys modify=new Modifys();
        modify.setNum(ini);
        OutPuts outPut=new OutPuts(file1);
        outPut.result();
    }
}
//使用FileInputStream读取文件内容
class InPuts{
    static String s="";
    void getIn(File file) {
        try {
            FileInputStream fileInputStream = new FileInputStream(file);
            byte buf[] = new byte[fileInputStream.available()];//返回可以从输入流中读取而不会阻塞的估计剩余字节数。此方法返回要从文件中读取的剩余字节数。当一个文件被完全读取时,这个函数返回零。
            fileInputStream.read(buf);//创建一个文件大小一样的缓冲区
            s = new String(buf);//将存在byte型数组中的数据转化为字符串
            fileInputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public String geT(){
        return s;
    }
}
//字符串中字符的删除
class Modifys extends InPuts{
    String ini;
    void setNum(String ini){
        this.ini=ini;
        int m=ini.length();
        for (int i=m;i<s.length();i++){

            if (s.substring(i-m,i).equalsIgnoreCase(ini)){//比较时忽略大小写
                s=s.replace(s.substring(i-m,i),"");
            }
        }
    }
    void getNum(){
        System.out.println(s);
    }
}
//使用FileOutputStream将修改后的内容写入新文件
class OutPuts extends Modifys{
    OutPuts(File file1) {
        try {
            FileOutputStream fileOutputStream = new FileOutputStream(file1);
            for (int i = 0; i < s.length(); i++) {
                fileOutputStream.write(s.charAt(i));
            }
        } catch (
                IOException e) {
            e.printStackTrace();
        }
    }
    void result(){
        System.out.println(s);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值