推荐下自己开发的一款字符串处理小工具 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
changdy

推荐下自己开发的一款字符串处理小工具

  •  
  •   changdy 6 天前 1264 次点击

    开发背景

    op 在一家小公司上班,由于系统 Bug 较多,经常需要处理数据库中奇怪的脏数据,便以此为契机开发了这款字符串小工具,同时也增加了一些实用功能。如果你经常需要读取 MyBatis 日志、使用 DataGrip 处理数据,或者浏览 JSON ,大概率会需要这款软件。

    功能介绍

    项目简介

    Software.png

    string_utils_v2 是一个面向日常开发场景的 Electron 托盘工具,核心能力是对剪贴板文本进行快速识别与转换。应用启动后默认常驻系统托盘,使用快捷键 Ctrl+Alt+D 即可唤醒。

    窗口弹出后会自动读取当前剪贴板内容,并根据内置处理器的匹配分数自动选中最合适的功能。按下 Enter 或点击按钮即可执行转换,结果会自动写回编辑区并同步复制到剪贴板。

    这个项目特别适合下面这些高频场景:

    • SQL 清洗:批量处理 DataGrip 导出的 UPDATE / INSERT 语句
    • MyBatis 还原:从注解或日志中提取可执行 SQL
    • JSON 辅助处理:字段抽取、结构预览、对象差异对比
    • 文本整理:排序去重、ID 拼接、命名风格转换
    • 私有工具扩展:通过用户脚本把团队内部的小工具挂进侧边栏

    使用方式

    1. 复制文本:先把待处理内容放到剪贴板
    2. 唤醒窗口:按默认快捷键 Ctrl+Alt+D
    3. 确认功能:程序会自动选中一个处理器,你也可以点击左侧图标手动切换
    4. 执行处理:按 Enter 或点击界面按钮
    5. 拿到结果:转换后的文本会自动复制回剪贴板

    补充说明:

    • 窗口行为:按 Esc 或切走焦点时窗口会自动隐藏
    • 托盘菜单:可控制功能显隐、设置开机启动、修改快捷键、打开用户脚本目录
    • 无联网依赖:运行阶段的 JSON 预览服务均在本地启动

    功能一览

    功能 说明 预览
    SQL 数据提取 针对 DataGrip 等工具导出的 UPDATE / INSERT 语句批量提取目标值
    排序并去重 对多行进行排序及去重 Sort_Distinct
    命名规则转换 camelCasesnake_casePascalCase 等风格之间切换 Naming_Convention.gif
    MyBatis 注解提取 @Select / @Update / @Insert / @Delete 注解中还原 SQL Mybatis_Annotation.gif
    MyBatis 日志解析 从 MyBatis 日志中拼接出可执行 SQL Mybatis_Log.gif
    JSON 预览 同时尝试打开本地 jsonherojsoncrack 预览 JSON JSON_View
    JSON 字段抽取 适合对象数组场景,执行时优先提取 id,否则提取每项的第一个字段;自动识别更偏向单字段对象数组 JSON_Extract
    ID 拼接 在换行、逗号和 "a","b" 形式之间快速切换 ID_Join.gif
    JSON Diff 将包含两个对象的 JSON 数组交给 vscode 做可视化对比 json-diff.gif

    JSON 预览与对比说明

    项目在启动时会尝试拉起两个本地 HTTP 服务,无需依赖公网:

    • jsoncrack:以节点图形式查看 JSON 结构,监听 9987-10087 之间的可用端口
    • jsonhero:以树形视图查看 JSON ,监听 13001-13101 之间的可用端口

    说明:

    • JSON 预览:会优先尝试打开 jsonhero,同时也会打开 jsoncrack
    • JSON Diff:输入必须是一个包含两个对象的 JSON 数组,例如 [{...}, {...}]
    • VS Code 依赖JSON Diff 建议本机已安装 VS Code,并可使用 code 命令

    开发的那些事

    最早的时候,这个项目是为了解决 ID 转换 的需求客服经常会给我一批以换行符分隔的订单编号,我需要批量加上引号、再用逗号分隔,然后拼成 IN("abc","甲乙丙","123") 的格式进行 SQL 查询。因为手动处理比较麻烦,加上当时对各种效率软件比较着迷,就尝试自己动手做一个。

    项目起步之后,后续开发也就步入了正轨:MyBatis 日志提取 SQL 、MyBatis 注解提取 SQL 、排序去重等功能都按部就班地实现了。但用了几年后觉得界面实在太丑,于是重写了 UI ,添加了一些动画,做成了现在的 V2 版本。V2 还增加了 JSON 预览以及 JSON 比较的功能,其中 JSON 预览使用了 json-hero 和 json-crack 来实现,这两个都是我认为非常优秀的 JSON 工具。

    关于 json-hero 还有一个有趣的小插曲:它是一款 Remix 全栈项目。前段时间我想把它集成到 Electron 中,在网上搜索解决方案时,竟然搜到了自己两年前的提问: t/1043371 。虽然过去了 700 天,但我仍然不懂 Remix ,只是借助高速发展的 AI ,把一个大任务拆分成几个子任务,分段完成了这一功能。

    当初开发时我也考虑过其他技术栈,比如 Flutter 、微软的 WPF 等,但最终还是不得不承认 Electron 开发效率是真的高

    就这些了,欢迎使用。

    8 条回复    2026-04-20 09:48:54 +08:00
    stinkytofux
        1
    stinkytofux  
       6 天前
    你这些规则都是硬编码的, 可能适合你, 但是不适合别人. 这种需求交给 AI 太简单了, 设置好提示词, 吞吐又快又灵活.
    ltaoo1o
        2
    ltaoo1o  
       6 天前
    后续需要的功能越来越多,硬编码能力满足不了,改成插件实现,用户可以自己安装需要的插件。好,恭喜你发明了 utools
    iorilu
        3
    iorilu  
       6 天前
    这个确实, 如果能自定义一些函数, 使用 js, 应该可以把, 用途就多些
    dreamk
        4
    dreamk  
       6 天前
    `应用启动后默认常驻系统托盘`

    换 tauri 吧,electron 这么大的安装包,还后台常驻,会劝退很多人,小工具就更应该精简些了
    /td>
    zerovoid
        5
    zerovoid  
       6 天前
    感觉小工具的时代过去了,
    现在 AI 可以直接根据你的需求,写出对应的处理脚本,
    AI 出的小脚本我还会存着,下次有类似需要,直接叫 AI 调用。
    changdy
        6
    changdy  
    OP
       5 天前
    @stinkytofux
    @zerovoid
    两位 ,我从来不否认 ai 的能力.但是一些随手用的工具 用固定的硬编码难道不就是最快最便捷的吗?
    对于 javaer crud 解析 mybatis 日志之类的 是非常日常的事情了,并且我也开头说了并不一定适合所有人.



    @ltaoo1o utools 确实有些功能能替代. 但是步骤还是会多一些. 略显麻烦了. 并且处理问题的核心思想还是有些差异的.


    @iorilu 支持用户自定义 js 代码的.



    @dreamk 当初有考虑过换.但其实两者都查不太大. 毕竟后台都是需要运行一个浏览器核心.区别只是一个安装包自带.一个没自带. 不过可能将来换成 flutter .当初做的时候 flutter desktop 端资料太少.现在有 ai 或许会方便一些.
    fbichijing
        7
    fbichijing  
       5 天前
    给不会编程的人,这种完特定功能的程序不一定刚好能适合这些人的使用。而会编程的人,大概并不十分需要这种程序。必要时自己撸一个就是了......
    iorilu
        8
    iorilu  
       5 天前
    @fbichijing 这个我赞同, 如果你定位是普通用户, 那就必须所有功能都是预制的, 用户只点一下就用, 不要指望用户学习任何东西

    如果定位程序员那另说

    但不要指望定位所有人, 只能选一种
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1056 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 56ms UTC 18:15 PVG 02:15 LAX 11:15 JFK 14:15
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86