首页 > 编程语言 >Java语言程序设计基础篇_编程练习题**18.31 (替换单词)

Java语言程序设计基础篇_编程练习题**18.31 (替换单词)

时间:2024-09-19 16:22:33浏览次数:3  
标签:练习题 java String import 18.31 File newWord oldWord Java

目录

题目:**18.31 (替换单词)

习题思路

代码示例 

运行结果

替换前

替换后


题目:**18.31 (替换单词)

  编写一个程序,递归地用一个新单词替换某个目录下的所有文件中出现的某个单词。从命令行如下传递参数:

java Exercise18_31 dirName oldWord newWord
  • 习题思路
  1. (读取路径方法)和18.28题差不多,把调用读取文件单词在文件内出现的次数改成调用读取并修改文件方法。Java语言程序设计基础篇_编程练习题*18.28 (非递归目录大小)-CSDN博客
  2. (读取并修改文件方法)传入文件和单词,逐行读取文件,将找到的单词替换为新的字符串,并将每一行(不管是否修改)添加到一个字符串中,在读取结束后向文件内写入字符串。.
  3. (main方法)读取传入的路径和单词,调用读取路径方法。
  • 代码示例 

编程练习题18_31ReplaceWords.java 

package chapter_18;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class 编程练习题18_31ReplaceWords {
	public static void main(String[] args) throws FileNotFoundException,IOException{
		if(args.length != 3) {
			System.out.println("Usage: java 编程练习题18_30WordCount dirName oldWord newWord");
			System.exit(0);
		}
		String path = args[0];
		String oldWord = args[1];
		String newWord = args[2];
		
		File file = new File(path);
		readPath(file, oldWord,newWord);
		System.out.println("Successfully replaced word.");
	}
	public static void readPath(File file,String oldWord,String newWord) throws FileNotFoundException,IOException{
		ArrayList<File> files = new ArrayList<File>();
		files.add(file);
		while(!files.isEmpty()) {
			ArrayList<File> newList = new ArrayList<File>();
			for(File f : files) {
				if(f.isFile())	
					readFile(f, oldWord,newWord);
				else {
					File[] fileList = f.listFiles();
					if(fileList != null) {
						for(File f2:fileList){
							if(f2.isDirectory())
								newList.add(f2);
							else readFile(f2, oldWord,newWord);
						}
					}
				}
			}
			files = newList;
		}
	}
	public static void readFile(File file, String oldWord,String newWord) throws FileNotFoundException,IOException {
		StringBuilder str = new StringBuilder();
		try(Scanner input = new Scanner(file)){
			while(input.hasNextLine()) {
				String line = input.nextLine();
				Pattern pattern = Pattern.compile("\\b" + Pattern.quote(oldWord) + "\\b");
                Matcher matcher = pattern.matcher(line);  
				if(matcher.find()) {
					line = matcher.replaceAll(newWord);
				}
				str.append(line+"\n");
			}
		}
		
		try(FileWriter output = new FileWriter(file)){
			output.write(str.toString());
		}
	}
}
  • 运行结果

  • 替换前

  • 替换后

标签:练习题,java,String,import,18.31,File,newWord,oldWord,Java
From: https://blog.csdn.net/2301_78998594/article/details/142353480

相关文章

  • Java 数据类型转换详解:隐式转换(自动转换)与强制转换(手动转换)
    目录前言取值范围从小到大的关系:隐式转换(自动转换)......
  • java 根据模板导出word文档(poi-tl)
    poi-tl是什么poi-tl是一个基于Apache POI的Word模板引擎,也是一个免费开源的Java类库,你可以非常方便的加入到你的项目中,并且拥有着让人喜悦的特性。为什么选择poi-tl方案移植性功能性易用性Poi-tlJava跨平台Word模板引擎,基于ApachePOI,提供更友好的API低代码,准备......
  • 多平台MD5加密与验证的实践:Java、Python、Windows、Linux
    前言在上一篇文章中,我们详细介绍了MD5算法的原理及其应用场景。为了帮助开发者更好地掌握MD5的实际使用方法,本文将通过Java、Python、Windows命令行、以及Linux命令行等多种方式,讲解如何在不同平台上生成和验证MD5摘要。通过这些实例,你可以更灵活地运用MD5来处理数据完整......
  • 最新推出Java面试题,持续更新!
    我国的八股文确实是独树一帜。以美国为例,北美工程师面试比较重视算法(Coding),近几年也会加入Design轮(系统设计和面向对象设计 OOD)和BQ轮(Behavioral question,行为面试问题)。那么为什么国内面试不采取这样的考察方式呢简单来说,互联网IT行业的求职者太多了,如果考察的......
  • 【Java-线程池】
    目录什么是线程池:线程池七大参数:参数详细介绍:1.核心线程数:2.最大线程数:3.线程存活时间:4.时间单位:5. 阻塞工作队列:6.线程工厂:7.拒绝策略:线程池的执行流程:线程池的常用方法:线程池分类:线程池的状态:​编辑什么是线程池:    简单来说,线程池就是帮助我们......
  • java+vue计算机毕设电影院售票网站【源码+开题+论文+程序】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和人们生活节奏的加快,线上购票已成为现代消费者享受娱乐服务的主要方式之一。电影院作为大众休闲娱乐的重要场所,其售票模式......
  • java+vue计算机毕设电子市场计算机配件报价系统【源码+开题+论文+程序】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,电子市场作为连接消费者与供应商的重要桥梁,其规模与复杂度日益增加。在计算机配件领域,产品种类繁多,价格波动频繁,传统的手工报......
  • java+vue计算机毕设订单管理系统【源码+开题+论文+程序】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着电子商务的蓬勃发展,订单管理成为了企业运营中不可或缺的一环。传统的订单处理方式往往依赖于人工操作,不仅效率低下,而且容易出错,难以满足现代商业......
  • JAVA学习路线分享:打造扎实的Java开发技能
            学习Java作为一门强大而广泛应用的编程语言,不仅可以为你打开职业发展的大门,还能让你在软件开发领域中游刃有余。在这篇文章中,我们将为您提供一个系统性的Java学习路线,帮助您逐步构建扎实的Java开发技能。第一阶段:基础知识        在学习Java的旅程中......
  • java+vue计算机毕设钓鱼爱好者交流平台【源码+开题+论文+程序】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在当今社会,随着生活节奏的加快和人们对休闲方式的多样化追求,钓鱼作为一项既能亲近自然又能修身养性的活动,受到了越来越多人的喜爱。然而,钓鱼爱好者们......