# text-tool **Repository Path**: hongweifei/text-tool ## Basic Information - **Project Name**: text-tool - **Description**: 一个做文本操作的工具,支持大文件文本替换等 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-09 - **Last Updated**: 2026-01-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 文本操作工具 (TextTool) 一个功能强大的 Java 桌面文本处理工具,提供文本替换、高级操作、文件对比和正则表达式增强等功能。 ![Version](https://img.shields.io/badge/version-0.1.1-blue.svg) ![Java](https://img.shields.io/badge/Java-11-orange.svg) ![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg) ## 功能特性 ### 📝 文本替换 - 支持普通文本替换和正则表达式替换 - 实时预览替换结果 - 大文件流式处理,支持 GB 级文件 - 批量文件处理 - 灵活的编码支持 ### 🔧 高级操作 - **行操作**:删除指定行、去重、排序、反转、去除空格 - **列操作**:CSV/TSV 按列处理(提取、删除、替换) - **编码转换**:批量转换文件编码 ### 🔄 文件对比 - 逐行对比两个文本文件 - 差异高亮显示(颜色区分) - 支持忽略空格和大小写 - 生成差异报告 - 导出 Unified Diff 格式 ### 🎯 正则增强 - 实时正则表达式测试 - 常用正则预设(邮箱、URL、IP 地址等) - 正则模板保存和管理 - 匹配结果高亮显示 ## 技术栈 - **Java 11** - 核心语言 - **Swing** - GUI 框架 - **Maven** - 项目构建 - **Regex** - 正则表达式处理 ## 快速开始 ### 环境要求 - Java 11 或更高版本 - Maven 3.6 或更高版本 ### 安装 #### 从源码构建 ```bash # 克隆项目 git clone https://gitee.com/hongweifei/text-tool.git cd text-tool # 编译项目 mvn clean package # 运行 java -jar target/text-tool-0.1.1-jar-with-dependencies.jar ``` #### 使用 Maven 运行 ```bash mvn clean package mvn exec:java -Dexec.mainClass="net.cyue.tool.text.TextToolApp" ``` ## 使用指南 ### 文本替换 1. 选择源文件和目标文件 2. 输入搜索文本(支持正则表达式) 3. 输入替换文本 4. 配置选项(正则模式、大小写敏感等) 5. 点击"预览"查看效果 6. 点击"执行"完成替换 ### 高级行操作 1. 切换到"高级操作"选项卡 2. 选择源文件和目标文件 3. **行操作**: - 选择操作类型(删除行、去重、排序等) - 配置行号范围(如:1,3-5,10) 4. **列操作**: - 选择分隔符类型 - 输入列号(从1开始) - 选择操作类型 5. 点击"执行"完成操作 ### 文件对比 1. 切换到"文件对比"选项卡 2. 选择要对比的两个文件 3. 配置对比选项(忽略空格、忽略大小写) 4. 点击"开始对比" 5. 查看对比结果和差异统计 6. 可导出差异报告 ### 正则增强 1. 切换到"正则增强"选项卡 2. **实时测试**: - 输入正则表达式 - 输入测试文本 - 查看匹配结果 3. **模板管理**: - 保存常用正则为模板 - 从预设库选择 - 快速应用模板 ## 项目结构 ``` text-tool/ ├── src/main/java/net/cyue/tool/text/ │ ├── config/ # 配置管理 │ ├── exception/ # 异常处理 │ ├── model/ # 数据模型 │ │ ├── config/ # 配置模型 │ │ ├── result/ # 结果模型 │ │ └── domain/ # 领域模型 │ ├── service/ # 业务服务 │ │ ├── core/ # 核心文件处理 │ │ ├── regex/ # 正则服务 │ │ ├── operation/ # 行列操作 │ │ ├── diff/ # 文件对比 │ │ └── callback/ # 回调接口 │ ├── ui/ # 用户界面 │ │ ├── main/ # 主窗口 │ │ ├── component/ # 自定义组件 │ │ └── panel/ # 功能面板 │ ├── util/ # 工具类 │ ├── worker/ # 后台任务 │ └── TextToolApp.java # 程序入口 ├── src/main/resources/ │ └── app.properties # 应用配置(版本号等) ├── pom.xml # Maven 配置 └── README.md # 项目文档 ``` ## 开发指南 ### 分层架构 ``` ┌─────────────────────────────────────┐ │ UI Layer (Swing) │ 用户界面 ├─────────────────────────────────────┤ │ Worker Layer (SwingWorker) │ 后台任务 ├─────────────────────────────────────┤ │ Service Layer (接口+实现) │ 业务逻辑 ├─────────────────────────────────────┤ │ Model Layer (数据模型) │ 数据对象 ├─────────────────────────────────────┤ │ Util Layer (工具类) │ 辅助功能 └─────────────────────────────────────┘ ``` ### 核心设计模式 - **Builder 模式** - 配置对象构建 - **工厂模式** - 服务实例管理 - **策略模式** - 不同操作类型处理 - **观察者模式** - 进度回调机制 ### 添加新功能 1. **添加新的配置模型** - 在 `model/config` 中创建配置类 - 使用 Builder 模式 2. **添加新的服务** - 在 `service` 对应子包创建接口 - 创建实现类 `*ServiceImpl` 3. **添加新的 UI 面板** - 在 `ui/panel` 对应子包创建面板类 - 继承 `JPanel` 4. **后台任务处理** - 继承 `SwingWorker` - 使用 `ProgressCallback` 报告进度 ## 配置说明 ### 支持的编码 - UTF-8 - GBK / GB2312 - ISO-8859-1 - US-ASCII - UTF-16 / UTF-16BE / UTF-16LE - Windows-1252 - BIG5 ### 正则表达式预设 | 类型 | 说明 | 示例 | |------|------|------| | EMAIL | 电子邮件 | `^[\\w.-]+@[\\w.-]+\\.\\w+$` | | URL | 网址 | `^https?://[\\w\\-]+(\\.[\\w\\-]+)+` | | IP_ADDRESS | IP 地址 | `^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$` | | PHONE_NUMBER | 手机号 | `^1[3-9]\\d{9}$` | | DATE | 日期 | `^\\d{4}-\\d{2}-\\d{2}$` | | CHINESE_CHAR | 中文字符 | `^[\\u4e00-\\u9fa5]+$` | ## 版本管理 本项目采用语义化版本(Semantic Versioning)规范,版本号格式为 `MAJOR.MINOR.PATCH`。 ### 版本号管理机制 - **单一数据源**:版本号统一在 `pom.xml` 中管理 - **自动同步**:构建时通过 Maven Resource Filtering 自动注入到代码 - **动态加载**:`AppConfig` 类从 `app.properties` 动态读取版本信息 ### 发布新版本流程 1. 修改 `pom.xml` 中的版本号: ```xml 0.1.1 ``` 2. 构建项目: ```bash mvn clean package -DskipTests ``` 3. 验证版本号: ```bash cat target/classes/app.properties ``` 4. 更新 README.md 和 JavaDoc 中的版本标注 ### 语义化版本规则 | 变更类型 | 版本示例 | 说明 | |---------|---------|------| | PATCH | 0.1.0 → 0.1.1 | 向后兼容的问题修复 | | MINOR | 0.1.0 → 0.2.0 | 向后兼容的新功能 | | MAJOR | 0.1.0 → 1.0.0 | 不兼容的 API 变更 | ## 常见问题 ### Q: 如何处理大文件? A: 本工具使用流式处理技术,支持 GB 级大文件。处理过程中会显示进度条。 ### Q: 正则表达式不生效? A: 确保勾选了"使用正则表达式"选项,并检查正则语法是否正确。 ### Q: 如何批量处理多个文件? A: 当前版本每次处理一个文件。批量处理功能将在后续版本中添加。 ### Q: 修改后如何保存? A: 所有操作会自动保存到目标文件,原文件不会被修改。 ## 更新日志 ### [v0.1.0] - 2026-01-09 **首个正式版本发布** #### 核心功能 - 📝 **文本替换**:普通/正则替换、实时预览、支持 GB 级大文件 - 🔧 **高级操作**:行操作(删除、去重、排序、反转)、列操作、编码转换 - 🔄 **文件对比**:Myers Diff 算法、差异高亮、双栏/虚拟化视图 - 🎯 **正则增强**:实时测试、11 种预设、模板管理 #### 技术特性 - 分层架构(UI → Worker → Service → Model → Util) - 核心设计模式:Builder、工厂、策略、观察者 - 分块读取大文件,支持流式处理 - 后台任务处理,避免 UI 阻塞 > 📄 详细更新记录请查看:[更新日志.md](更新日志.md) ## 贡献指南 欢迎提交 Issue 和 Pull Request! ### 提交代码前 1. Fork 本项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启 Pull Request ### 代码规范 - 遵循 Java 编码规范 - 添加必要的注释 - 确保编译通过 - 更新相关文档 ## 许可证 本项目采用 Apache License 2.0 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。 ``` Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ``` ## 联系方式 - 项目主页:[https://gitee.com/hongweifei/text-tool](https://gitee.com/hongweifei/text-tool) - 问题反馈:[Gitee Issues](https://gitee.com/hongweifei/text-tool/issues) ## 致谢 感谢所有为本项目做出贡献的开发者! --- **⭐ 如果这个项目对你有帮助,请给个 Star 支持一下!**