今天下载了一本第四版电气工程师手册,非常棒的一本书,在给PDF添加目录的时候,由于目录有将近60页,使用老马开发的PdgCntEditor有点卡顿,不过补充下,老马这个PdgCntEditor还是非常好的。

所以我决定用Java编一个小程序来对目录文件进行缩进处理,然后再导入到PdgCntEditor中进行保存。

之前还没试过用AI编写程序,就采用豆包进行了一个程序测试。

输入指令如下:

作为一名java程序员,请你设计一段java程序,逐行读入文本,若读入的行的行首包含制表符,则去除行首制表符,然后当该行的开头字符为数字,且前三个字符未包含符号“.”,则在行首增加两个制表符,若包含有符号“.”,则在行首增加一个制表符。并将文本进行保存。

豆包自动生成了一个程序,结果输入的文本是中文,输出的是乱码。豆包又增加了通过指定StandardCharsets.UTF_8,结果FileReader没有 new FileReader(String, StandardCharsets.UTF_8))方法,提交该问题后,豆包又进行了优化。

优化后的程序非常好用,而且编写规范。以下是豆包写的程序:

import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class TextProcessor {// 匹配行尾的数字(整数或小数)private static final Pattern NUMBER_PATTERN = Pattern.compile("(\\d+(\\.\\d+)?)\\s*$");public static void main(String[] args) {Scanner scanner = new Scanner(System.in);//        System.out.print("请输入源文件路径:");
//        String sourcePath = scanner.nextLine();
//
//        System.out.print("请输入目标文件路径:");
//        String targetPath = scanner.nextLine();String sourcePath = "E:\\input.txt";String targetPath = "E:\\output.txt";try {processTextFile(sourcePath, targetPath);System.out.println("文件处理完成,已保存至:" + targetPath);} catch (IOException e) {System.err.println("文件处理出错:" + e.getMessage());} finally {scanner.close();}}private static void processTextFile(String sourcePath, String targetPath) throws IOException {try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(sourcePath), StandardCharsets.UTF_8));BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(targetPath), StandardCharsets.UTF_8))) {String line;while ((line = reader.readLine()) != null) {String processedLine = processSingleLine(line);writer.write(processedLine);writer.newLine();}}}private static String processSingleLine(String line) {if (line.isEmpty()) {return line;}// 第一步:去除行首所有制表符String lineWithoutLeadingTabs = line.replaceAll("^\\t+", "");if (lineWithoutLeadingTabs.isEmpty()) {return lineWithoutLeadingTabs;}// 第二步:处理行首数字逻辑(添加制表符)String lineWithTabs = addLeadingTabs(lineWithoutLeadingTabs);// 第三步:提取行尾数字并加70return processTrailingNumber(lineWithTabs);}/*** 根据行首数字和"."的存在情况添加制表符*/private static String addLeadingTabs(String line) {char firstChar = line.charAt(0);if (Character.isDigit(firstChar)) {int endIndex = Math.min(3, line.length());String firstThreeChars = line.substring(0, endIndex);if (firstThreeChars.contains(".")) {return "\t" + line; // 包含".",添加1个制表符} else {return "\t\t" + line; // 不包含".",添加2个制表符}}return line;}/*** 提取行尾的数字部分并加70*/private static String processTrailingNumber(String line) {Matcher matcher = NUMBER_PATTERN.matcher(line);if (matcher.find()) {String numberStr = matcher.group(1);try {// 解析为double处理整数和小数double number = Double.parseDouble(numberStr);double newNumber = number + 68;// 格式化结果:整数保持整数形式,小数保留两位String formattedNumber = (newNumber == Math.floor(newNumber))? String.format("%.0f", newNumber): String.format("%.2f", newNumber);// 替换行尾的数字部分return line.substring(0, matcher.start()) + formattedNumber;} catch (NumberFormatException e) {// 解析失败时返回原始行(理论上不会发生,因为正则已匹配有效数字)return line;}}// 未找到行尾数字,直接返回原始行return line;}
}

以下是缩进好的文本,非常巴适。

另外,豆包还会将编程要求进行梳理,列出表格,非常巴适。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/88250.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/88250.shtml
英文地址,请注明出处:http://en.pswp.cn/web/88250.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot整合腾讯云新一代行为验证码

一 产品介绍 腾讯云官方介绍链接 腾讯云新一代行为验证码(Captcha),基于十道安全防护策略,为网页、App、小程序开发者打造立体、全面的人机验证。在保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时&…

SenseGlove新一代外骨骼力反馈手套Rembrand来袭!亚毫米级手部动捕+指尖触觉力采集+5Dof主动力反馈多模态

在远程机器人操作领域,精准的触觉感知与灵活的动作控制始终是核心需求。SenseGlove 新推出的 Rembrandt 力反馈外骨骼数据手套,以先进技术为支撑,为远程操控人形机器人手部提供了无缝解决方案,让操作更精准、更高效。值得一提的是…

Linux 信号机制:操作系统的“紧急电话”系统

想象一下,你正在电脑前专心工作,突然手机响了——这是一个通知,要求你立即处理一件新事情(比如接电话)。 Linux 系统中的信号(Signal)​​ 机制,本质上就是操作系统内核或进程之间用…

论文略读:Prefix-Tuning: Optimizing Continuous Prompts for Generation

2021 ACL固定预训练LM,为LM添加可训练,任务特定的前缀这样就可以为不同任务保存不同的前缀这种前缀可以看成连续可微的soft prompt,相比于离散的token,更好优化,效果更好训练的时候只需要更新prefix部分的参数&#xf…

CSS基础选择器、文本属性、引入方式及Chorme调试工具

CSS基础 1.1 CSS简介 CSS 是层叠样式表 ( Cascading Style Sheets ) 的简称. 有时我们也会称之为 CSS 样式表或级联样式表。 CSS 是也是一种标记语言 CSS 主要用于设置 HTML 页面中的文本内容(字体、大小、对齐方式等)、图片的外形(宽高、边…

RabbitMQ 高级特性之事务

1. 简介与 MySQL、Redis 一样,RabbitMQ 也支持事务。事务中的消息,要么全都发送成功,要么全部发送失败,不会出现一部分成功一部分失败的情况。2. 使用事务发送消息spring 中使用 RabbitMQ 开启事务需要两步:第一步&…

iframe 的同源限制与反爬机制的冲突

一、事件背景A域名接入了动态防护(Bot 防护、反爬虫机制),同时第三方业务B域名通过内嵌iframe的方式调用了A域名下的一个链接。二、动态防护介绍:动态防护(也称为 Bot 防护、反爬虫机制)是网站为了防止自动…

Rust 的 Copy 语义:深入浅出指南

在 Rust 中,Copy 是一个关键的特性,它定义了类型的复制行为。理解 Copy 语义对于掌握 Rust 的所有权系统和编写高效代码至关重要。一、核心概念:Copy vs Move特性Copy 类型非 Copy 类型 (Move)赋值行为按位复制 (bitwise copy)所有权转移 (ow…

Qt的信号与槽(二)

Qt的信号与槽(二)1.自定义槽2.通过图形化界面来生成自定义槽3.自定义信号3.信号和槽带参数4.参数数量5.connect函数的设计🌟hello,各位读者大大们你们好呀🌟🌟 🚀🚀系列专栏&#xf…

Java研学-MongoDB(三)

三 文档相关 7 文档统计查询① 语法: // 精确统计文档数 慢 准 dahuang> db.xiaohuang.countDocuments({条件}) 4 // 粗略统计文档数 快 大致准 dahuang> db.xiaohuang.estimatedDocumentCount({条件}) 4② 例子: // 精确统计文档数 name为奔波儿灞…

TCP协议格式与连接释放

TCP报文段格式 TCP虽然是面向字节流的,但TCP传送带数据单元确是报文段。TCP报文段分为首部和数据段部分,而TCP的全部功能体现在它在首部中各字段的作用。因此,只有弄清TCP首部各字段的作用才能掌握TCP的工作原理。 TCP报文段首部的前20字节是…

CSS05:结构伪类选择器和属性选择器

结构伪类选择器 /*ul的第一个子元素*/ ul li:first-child{background: #0af6f6; }/*ul的最后一个子元素*/ ul li:last-child{background: #d27bf3; } /*选中p1:定位到父元素,选择当前的第一个元素 选择当前p元素的父级元素,选中父级元素的第…

使用策略模式 + 自动注册机制来构建旅游点评系统的搜索模块

✅ 目标: 搜索模块支持不同内容类型(攻略、达人、游记等)每种搜索逻辑用一个策略类表示自动注册(基于注解 Spring 容器)新增搜索类型时,只需添加一个类 一个注解,无需改工厂、注册表等&#x…

第八十九篇 大数据开发中的数据算法:贪心策略 - 生活中的“精打细算”艺术

在资源有限的世界里,贪心算法教会我们:局部最优的累积,往往是通往全局最高效的捷径。本文通过3个生活化场景原创图表,揭示大数据开发中最实用的优化策略。目录一、贪心算法核心思想:当下即最优二、三大核心应用场景详解…

【论文阅读】Dynamic Few-Shot Visual Learning without Forgetting

系统概述如下: (a) 一个基于卷积神经网络(ConvNet)的识别模型,该模型包含特征提取器和分类器; (b) 一个少样本分类权重生成器。这两个组件都是在一组基础类别上训练的,我们为这些类别准备了大量训练数据。在测试阶段,权重生成器会接收少量新类别的训练数据以及基础类别的…

HTML应用指南:利用GET请求获取全国山姆门店位置信息

山姆会员店作为全球知名的零售品牌,自进入中国市场以来,始终致力于为消费者提供高品质商品与便捷的购物体验。随着新零售业态的快速发展,门店位置信息的获取变得愈发重要。品牌通过不断拓展门店网络,目前已覆盖多个一、二线城市&a…

java ThreadLocal源码分析

写个demo测试下&#xff1a;private static void testThreadLocal() {ThreadLocal<Integer> threadLocal new ThreadLocal<>();new Thread(){Overridepublic void run() {threadLocal.set(9527);System.out.println("curr thread: " Thread.currentThr…

后端Web实战(项目管理)

Restful风格 我们的案例是基于当前最为主流的前后端分离模式进行开发 在前后端分离的开发模式中&#xff0c;前后端开发人员都需要根据提前定义好的接口文档&#xff0c;来进行前后端功能的开发。 后端开发人员&#xff1a;必须严格遵守提供的接口文档进行后端功能开发&#…

Leetcode 3604. Minimum Time to Reach Destination in Directed Graph

Leetcode 3604. Minimum Time to Reach Destination in Directed Graph 1. 解题思路2. 代码实现 题目链接&#xff1a;3604. Minimum Time to Reach Destination in Directed Graph 1. 解题思路 这一题思路上就是一个广度优先遍历&#xff0c;我们不断考察当前时间点以及位置…

OpenXR Runtime切换工具-OpenXR-Runtime-Switcher

在开发VR时&#xff0c;有时有多个设备&#xff0c;大家可能也会选择不同的串流工具&#xff0c;OpenXR类似于默认浏览器&#xff0c;如果设置错误可能导致游戏无法串流。 推荐一个工具&#xff0c;可以设置默认的OpenXR工具。 OpenXR-Runtime-Switcher 对于没有的设备&#…