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

embedded/2024/11/13 10:27:30/

目录

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

习题思路

代码示例 

运行结果

替换前

替换后


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

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

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

编程练习题18_31ReplaceWords.java 

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());}}
}
  • 运行结果

  • 替换前

  • 替换后


http://www.ppmy.cn/embedded/114173.html

相关文章

数据结构——串的定义及存储结构

串的定义 串&#xff08;string&#xff09;——零个或多个任意字符组成的有限序列串是内容受限的线性表 串的几个术语 子串&#xff1a;串中任意几个连续字符组成的子序列称为该串的子串&#xff08;真子串是指不包含自身的所有子串&#xff09;主串&#xff1a;包含子串的串…

MacOS Sonoma(14.x) 大写模式或中文输入法下的英文模式,光标下方永远会出现的CapsLock箭头Icon的去除办法

如图&#xff0c;MacOS Sonoma(14.x) 大写模式或中文输入法下的英文模式下&#xff0c;光标下方永远会出现一个CapsLock箭头Icon。此Icon挡住视野&#xff0c;还容易误触导致切换大小写状态&#xff0c;带来的收益远远小于带来的困扰。 解决办法 打开终端&#xff0c;输入以下…

阿里国际发布最新版多模态大模型Ovis,拿下开源第一

看一眼菜品图就知道怎么做、能给植物看病、能把手写英文准确翻译成中文、还能精准分析财报数据……多模态能力再次升级&#xff01;阿里国际AI团队发布了一款多模态大模型Ovis&#xff0c;在图像理解任务上不断突破极限&#xff0c;多种具体的子类任务中均达到了SOTA&#xff0…

网络安全(黑客技术)2024年三个月自学计划

&#x1f91f; 基于入门网络安全/黑客打造的&#xff1a;&#x1f449;黑客&网络安全入门&进阶学习资源包 前言 什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”…

电商安全新挑战:筑起数字防御长城,守护业务与数据安全

在当今这个数字化时代&#xff0c;电商行业正以前所未有的速度发展&#xff0c;大数据、人工智能等技术的融入不仅重塑了消费模式&#xff0c;更激发了行业新的增长点。然而&#xff0c;这片繁荣景象之下&#xff0c;隐藏着一个不容忽视的暗流——网络安全威胁。从数据泄露到恶…

什么是 IP 地址信誉?5 种改进方法

IP 地址声誉是营销中广泛使用的概念。它衡量 IP 地址的质量&#xff0c;这意味着您的电子邮件进入垃圾邮件或被完全阻止发送的可能性。 由于每个人都使用专用电子邮件提供商而不是直接通过 IP 地址进行通信&#xff0c;因此&#xff0c;这些服务可以跟踪和衡量发件人的行为质量…

Swift语言基础教程、Swift练手小项目、Swift知识点实例化学习

Swift Swift语言基础教程1. Swift简介2. 基本语法变量和常量数据类型字符串插值数组和字典 3. 控制流条件语句循环 4. 函数5. 类和结构体6. 枚举和错误处理枚举错误处理 案例&#xff1a;简单的计算器小项目&#xff1a;待办事项应用&#xff08;ToDo List&#xff09;功能代码…

C++类和对象(4)

1. 再探构造函数 之前我们实现构造函数时&#xff0c;初始化成员变量主要在构造函数体内赋值&#xff0c;构造函数初始化还有⼀种方 式&#xff0c;就是初始化列表&#xff0c;初始化列表的使用方式是以⼀个冒号开始&#xff0c;接着是⼀个以逗号分隔的数据成 员列表&#xf…