# string-recombination **Repository Path**: caojiaxin97/string-recombination ## Basic Information - **Project Name**: string-recombination - **Description**: 字符串重组工具 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2024-12-06 - **Last Updated**: 2025-07-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目简介 在日常开发工作中,有很多时候会遇到字符串重组的需求,一个很常见的例子就是:领导给一个格式任意的开发文档,比如一个包含了用户字段的表格,我们需要将他转换成java类,此时不得不数次手敲重复的代码 'private xxx xxx;',枯燥乏味不说,还可能会出错。 后来遇到字段特别多的情况,我可能会写一段代码帮我转换,但每次打开IDEA到coding到编译到运行,其实算是一个比较麻烦的过程。我就想为什么不直接将固定的流程封装成客户端小工具呢?这样会大大节省处理时间,于是就有了本项目的诞生。 本工具基于 java 17 开发,直接使用需要 jdk17 环境,旨在帮助用户通过一系列流式操作拆分重组字符串,提高工作效率。由于是面向本人开发,所以想要完整使用本工具你可能需要掌握:字符转义、java正则表达式、JavaScript脚本语言、freemarker模板语言。 整体界面如下: ![1733467388017](assets/1733467388017.jpg) # 快速开始 双击运行项目中的 **string-recombination-1.0-SNAPSHOT.jar** 即可启动程序(需JDK17环境),点击load按钮加载 `archive/example.ed` 文件读取示例存档,快速开始你的尝试和体验 # 文档 完整的字符串处理流程为: Source:源字符串 -> Split:拆分字符串 -> Handle:处理字符串 -> Extract:正则提取 -> Template:模板重组 -> Assemble:组装所有节点 省略任意环节,后续环节将向前寻找最近的未省略环节的结果作为处理源 Extract 和 Template 必须配套使用 点击 stream 按钮会依次模拟点击每个节点的按钮,完整全部流程 ## 节点 ### Source 待重组字符串,比如直接从Excel复制过来的文本 ### Split 分隔字符串,本质是`Stirng.split()`方法,会根据输入的字符串(或正则表达式)拆分原字符串为集合,拆分的结果会出现在下方文本框中。 #### 指定模式 如果包含箭头,如图示`s->`,则表示按指定模式处理,目前包含两种模式:s 分隔;e 提取 `s->`分隔模式(split),即`Stirng.split()`方法,如果不指定模式(省略箭头)默认该模式,在分隔字符串本身包含箭头时不能省略指定模式的箭头; `e->`提取模式(extract),会根据输入的正则表达式提取文本而非分隔文本,如果正则表达式中包含捕获组,则提取第一个捕获组的文本(结合非捕获可以提取任意部分) ### Handle JavaScript处理函数,预置`split`变量是split环节的处理结果,通过`return`一个数组将结果抛给后续流程,处理结果会出现在下方文本框中 ### Extract 正则提取,会根据输入的正则表达式向handle环节的处理结果的每一项提取捕获组,用于template环节的重组。每一项都会被拆分成数组,即此时完整结果将是一个二维数组。 ### Template freemarker模板语言,内置Regex环节提取的所有捕获组变量,通过`${_n}`变量访问。可以将每一项都重组为希望的格式。freemarker具体语法详见官网 ### Assemble JavaScript处理函数,预置 `split`、`handle`、`extract`、`template`四个变量分别是前置四个节点的处理结果,通过`return`一个字符串得到最后的结果 ## 存档读档 ### 节点存档 任意环节名称后的repo按钮用于管理该节点的存档,点击唤起存档管理框(启动程序也会自动唤起Source存档管理框)。 存档管理框用于管理存档表格,支持增删改查,每条存档包含名称、快捷键、内容(字符串段落),其中名称不能为空,保存时会自动过滤名称为空的项目 通过 Ctrl + Shift + ↑/↓ 可以调整表格顺序 在节点对应的输入框内,可以通过存档中保存的快捷键 插入对应的存档内容。 节点存档保存在程序同路径下的repository.ed文件中,ed文件是内置基于aes加密的文件格式。 每次启动文件会自动搜索程序同路径下以repository.ed结尾的第一个文件,因此如果将存档重命名为java-repository.ed放在程序路径下,也是能够读取到的,这样设计是为了方便管理和切换不同的存档文件。 ### 整体存档 位于source后的 load 按钮和位于 末尾的 save 按钮,用于整体存档、读档操作。会将主窗口内的全部内容以json格式保存。 ## 文本框放大 所有文本框获取焦点时,均可按下F11打开该文本框放大后的新窗口(简称放大框),在放大框能能更清晰方便的进行阅读和编辑,所有节点存档中的快捷键均可在放大框中进行使用,在放大框获取焦点时再次按下F11可保存到原文本框并关闭放大框 注意,按ESC或右上角叉关闭放大框将不会同步放大框中的文本到原文本框 ## 文本框正则转义 Split、Extract为正则转义文本框,在标题后用 (regex) 标明,在该文本框中字符都会进行转义,如 \n 会转义成换行符(正常回车也同样是有效换行符),如果需要转义括号等特殊字符(表示字符本身),则需要输入两个反斜杠 在正则文本框中可以使用 Ctrl + Shift + V 来进行转义粘贴,所有涉及到特殊字符的地方会自动添加两个反斜杠